Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Глюк паскаля

536
01 ноября 2009 года
alex-kniaz
382 / / 07.08.2008
Код:
var
  diapazon:string;
  block:array [1..4] of string;
  bin:array [1..4] of boolean;
  i,len,j:integer;
begin
  readln(diapazon);

  for i:=1 to 4 do block:='';

  len:=length(diapazon);
  j:=1;
  for i:=0 to len do begin
          if (diapazon='[') or (diapazon=']') then bin[j]:=true
     else if (diapazon='(') or (diapazon=')') then bin[j]:=false
     else if (diapazon=',') or (diapazon='*') then j:=j+1
     else block[j]:=block[j]+diapazon;
  end;

  for i:=1 to 4 do writeln(block);
end.


Проге вводится диапазон чисел : (-@,3)*[2,5]
Должно вывестись
-@
3
2
5
Т.е. числа из диапазона нужно вывести указанные числа. 2 диапазона, разделитель - *. Разделитель чисел в диапазоне - запятая, вмето знака бесконечночти - @.
Но вместо того, что нужно вывести, выводит катинку из capture.png, т.е. к -@ откуда-то добавляется лишний символ.


Что делать?
1.9K
01 ноября 2009 года
andriano
474 / / 10.01.2008
Сэр в курсе, что символы строки нумеруются с единицы, а в нулевом - хранится длина строки?

PS. И измени название темы с "Глюк Паскаля" на "Мой глюки".
536
01 ноября 2009 года
alex-kniaz
382 / / 07.08.2008
Вы плохо знаете трупо паскаль. В нём уж точно символы идут с 0-го.
И при чём тут мои глюки? Моих глюков тут нэма
536
01 ноября 2009 года
alex-kniaz
382 / / 07.08.2008
Применил фильтрацию символов. Т.е. перед дозаписью в строку символ проверяется на разрешённость (0,1,2,3,4,5,6,7,8,9,-,@,.) и если это один из них, то добавляется
536
01 ноября 2009 года
alex-kniaz
382 / / 07.08.2008
Я так уверен что символы идут с 0-го благодаря результатам выполнения
 
Код:
var c:string;
begin
readln(c);
writeln(c[0]);
end.

Результат : ввёл (*) в итоге - (
1.9K
01 ноября 2009 года
andriano
474 / / 10.01.2008
Цитата: alex-kniaz
Я так уверен что символы идут с 0-го благодаря результатам выполнения
 
Код:
var c:string;
begin
readln(c);
writeln(c[0]);
end.

Результат : ввёл (*) в итоге - (


Эксперименты тоже надо уметь ставить.

Но прежде все равно неплохо было бы почитать документацию.

PS. А название темы все-таки измени.

55K
22 ноября 2009 года
aandriyash
1 / / 21.11.2009
Размер строки храниться в нулевом символе.
т.е. diapazon[0] - размер стоки.

форматируй код так, чтоб его было легко читать, иначе сам можешь запутаться, посмотрев на него дня эдак через три.
274
22 ноября 2009 года
Lone Wolf
1.3K / / 26.11.2006
Цитата: alex-kniaz
Я так уверен что символы идут с 0-го благодаря результатам выполнения
 
Код:
var c:string;
begin
readln(c);
writeln(c[0]);
end.

Результат : ввёл (*) в итоге - (


а еще раз проверить ?

Так что повторюсь еще раз. в Паскале строка начинается с 1го елемента, в нулевом - символ код которого = длинне строки

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог