Дана программа которая должна удалять пробелы из строки Program var15_stroki; Var...

0 голосов

Дана программа которая должна удалять пробелы из строки
Program var15_stroki;
Var s:string;
i,endstr:integer;
Begin
Readln(s);
endstr:=Length(s);
for i:=2 to endstr do
if s[i]=' ' then
Delete(s,i,1);
Writeln(s);
Readln;
end.
Вот тут ошибка if s[i]=' ' then программа выдает Ошибка времени выполнения, Индекс находился вне границ массива
Нужно исправить


спросил от Начинающий (595 баллов) в категории Информатика
оставил комментарий от Одаренный (1.8k баллов)

А какого размера строку вводите?

оставил комментарий от Архангел (142k баллов)

Просто вычеркнуть из строки все пробелы?

оставил комментарий от Начинающий (595 баллов)

от 1 до 302, пробел может стоять

оставил комментарий от Архангел (142k баллов)

Вы цикл наоборот сделайте, от последнего символа к первому.for i:=endstr downto 1 do

1 Ответ
0 голосов
ответил от Начинающий (256 баллов)

Если по мере выполнения цикла for менять значение переменной его границы, то цикл НЕ будет меняться, а так как ты удаляешь пробелы, то длина строки уменьшается. В твоем примере нужно заменить цикл for на цикл while(i<=length(s)) ну и в цикле добавить i:=i+1;

оставил комментарий от Архангел (142k баллов)

сами-то попробовали?

оставил комментарий от Начинающий (595 баллов)

у меня получилось

оставил комментарий от Начинающий (595 баллов)

все верно тут

...