Форум «Всё о Паскале» _ Задачи _ задача с заменой символов
Автор: Витёк 29.11.2006 16:14
Нам задали сделать задачку. Вот условие: А) заменить все (!) знаки на (.) Б) затем все точки заменить на (...). Первую часть я сделал так:
var s:string; i:integer; begin readln(s); for i:=1 to length(s) do if s[i] ='!' then s[i]:='.'; writeln(s); end.
Ну а вот с заменой точки в этой же программе выходит ошибка. Я хотел сделать это также как и с (!), но не получилось. Объясните пожалйста что я не так сделал.
Автор: klem4 29.11.2006 16:44
Вот так например:
i := 1;
while (i <= Length(s)) do if s[i] = '.' then begin Insert('..', s, i + 1); inc(i, 3); end else inc(i);
Автор: volvo 29.11.2006 16:57
Цитата
Объясните пожалйста что я не так сделал
Если бы ты показал, КАК ты сделал вторую часть, мы бы подсказали, где твоя ошибка... А так - телепатически - ты в начале цикла нашел длину строки, и проходишь по ней... Но при добавлении символов в строку ее длина изменяется, а твоя программа об этом не знает, так что For здесь не пойдет явно...
Не забывай, конечное значение переменной для For-а не вычисляется на каждой итерации, оно вычисляется ПЕРЕД началом цикла, и сохраняется...