Не могу найти ошибки в программе - Pascal

Узнай цену своей работы

Формулировка задачи:

В 19 строке пишет: Ошибка времени выполнения: Входная строка имела неверный формат.

Решение задачи: «Не могу найти ошибки в программе»

textual
Листинг программы
var s:string;
    a:array of integer;
    c,n,i:integer;
begin
readln(s);//читаем строку из чисел, разделенных пробелами
s:=s+' ';//добавим пробел в конец для удобства
n:=0;//размер массива пока 0
while pos(' ',s)>0 do//пока есть пробелы в строке
 begin
  c:=strtoint(copy(s,1,pos(' ',s)-1));//читаем число
  delete(s,1,pos(' ',s));
  if c<0 then write(c,' ')//если отрицательное, выводим
  else if c>0 then//если положительное, в массив
   begin
    inc(n);
    setlength(a,n);
    a[n-1]:=c;
   end;
 end;
for i:=0 to n-1 do
write(a[i],' ');
end.

Объяснение кода листинга программы

  1. В начале программы объявлены четыре переменные: s (строка), a (массив целых чисел), c и n (целые числа).
  2. С помощью функции readln в переменную s считывается строка, состоящая из целых чисел, разделенных пробелами.
  3. В строку s добавляется пробел в конец с помощью оператора конкатенации.
  4. Переменная n инициализируется значением 0, которое будет использоваться как размер массива.
  5. В цикле while проверяется, есть ли еще пробелы в строке s.
  6. Если пробелы есть, то из строки считывается число c, преобразуемое в целое число с помощью функции strtoint.
  7. С помощью функции delete удаляются символы под номерами 1...pos(' ')-1 из строки s.
  8. Если число c отрицательное, то оно выводится на экран.
  9. Если число c положительное, то оно добавляется в массив a, при этом увеличивается размер массива и индекс нового элемента.
  10. В цикле for выводятся на экран все числа из массива a, разделенные пробелами.

Оцени полезность:

12   голосов , оценка 4.083 из 5
Похожие ответы