Ошибка времени выполнения: Индекс находился вне границ массива
Как исправить?
Program A2;
Var s:string;
i:integer;
Begin
Readln(s);
For i:= 1 to length(s) do
If s[i]=',' then delete (s, i, 1);
Writeln(s);
End.

10 Сен 2019 в 00:42
275 +1
0
Ответы
1

Ошибка происходит из-за того, что при удалении символа из строки длина строки уменьшается, что приводит к тому, что индекс выходит за границы массива.

Чтобы исправить эту ошибку, нужно изменить цикл так, чтобы он проходил по строке с конца к началу. Вот исправленный код:

Program A2;
Var
s: string;
i: integer;
Begin
Readln(s);
For i := Length(s) downto 1 do
If s[i] = ',' then
Delete(s, i, 1);
Writeln(s);
End.

Теперь цикл проходит по строке с конца к началу, и эта проблема больше не возникает.

20 Апр 2024 в 02:05
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир