Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Задача: найти и заменить слово в массиве строк

Автор: AGENT_KGB 12.11.2007 23:29

Задача найти и заменить слово, введенное с клавиатуры на другое, в массиве строк. Желательно в виде функции.

Автор: Sozialist 13.11.2007 3:27

В чем затруднение? Стандартный поиск с FOR, POS, потом DELETE и INSERT

Автор: AGENT_KGB 13.11.2007 16:56

Пробовал, но у меня зацикливает-препод мняет "баба" на "баобаба".

Автор: Lapp 13.11.2007 17:05

Так ты покажи, что сделал. Подправим.

Автор: AGENT_KGB 13.11.2007 22:50

Ну вот она:


begin
write ('Find: ');
readln (w1);
write ('Change: ');
readln (w2);
while pos(w1,s)>0 do
begin
delete(s,pos(w1,s),length(w1));
insert(w2,s,pos(w1,s));
end;
for i:=1 to length (s) do
write (s[i]);
end;

Вообще работает, но зацикливает.

Автор: volvo 14.11.2007 5:47

Ну, скажем, начать исправлять уже отсюда:

Цитата
delete(s,pos(w1,s),length(w1));
insert(w2,s,pos(w1,s)); { <--- После удаления части строки в предыдущем операторе ??? }


Надо запомнить позицию, и потом (при вставке) не искать ее еще раз, а использовать то, что уже было найдено...

Кроме этого, где массив строк? Или ты хочешь оформить это функцией и вызывать в цикле?

P.S. Еще одно - ты написал
Цитата
найти и заменить слово, введенное с клавиатуры на другое
, а можешь получить замену последовательности символов. Чтобы было слово, надо чтоб оно было с обоих сторон ограничено либо разделителями, либо началом/концом строки (как находить в строке именно слово одним If-ом - было на форуме, искать по слову "трехэтажную")

Автор: AGENT_KGB 15.11.2007 0:19

Куда записывать позицию если слово не одно? В массив?

Автор: volvo 15.11.2007 0:27

Примеры приводи, или выражайся как-нибудь так, чтобы было понятно. ГДЕ не одно слово?

Автор: AGENT_KGB 15.11.2007 0:34

В тексте надо заменить все слова на введенное с клавиатуры, как в Ворде.