Не могу найти ошибки в программе - 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.
Объяснение кода листинга программы
- В начале программы объявлены четыре переменные: s (строка), a (массив целых чисел), c и n (целые числа).
- С помощью функции readln в переменную s считывается строка, состоящая из целых чисел, разделенных пробелами.
- В строку s добавляется пробел в конец с помощью оператора конкатенации.
- Переменная n инициализируется значением 0, которое будет использоваться как размер массива.
- В цикле while проверяется, есть ли еще пробелы в строке s.
- Если пробелы есть, то из строки считывается число c, преобразуемое в целое число с помощью функции strtoint.
- С помощью функции delete удаляются символы под номерами 1...pos(' ')-1 из строки s.
- Если число c отрицательное, то оно выводится на экран.
- Если число c положительное, то оно добавляется в массив a, при этом увеличивается размер массива и индекс нового элемента.
- В цикле for выводятся на экран все числа из массива a, разделенные пробелами.