Задача найти и заменить слово, введенное с клавиатуры на другое, в массиве строк. Желательно в виде функции.
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
В тексте надо заменить все слова на введенное с клавиатуры, как в Ворде.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.