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

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

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

Автор: Gudzon 27.04.2007 0:30

Может для кого-то покажется легкой .заменить в тексте все слова "функция" на "процедура" в текстовом файле(любой .txt) .Программа звучит так,никак не могу придумать алгоритм.Помогите пожайлуста завтра нужно сдать.

Автор: мисс_граффити 27.04.2007 0:55

Нужно ли заменять слово, если оно не отдельно стоящее, а часть другого? Ну например "минифункция"...
Если нужно:
1. Считали строку из файла f1
2. Если pos искомого слова в строке не равно 0, сделали delete и insert на соответствующее место.
3. записали строку в файл f2
4. удалили f1
5. переименовали f2

Если нет - придется преобразовать второй пункт (см. тему "Разбиение на слова. Все способы")

Автор: Tan 27.04.2007 1:06

В слове функция - 8 букв, в слове процедура - 9, из - за этого не надо будет пробельчик вставлять, чтобы не смешался текст ? ( то есть урезаем 8 букв а вставляем 9 ) Или я перемудрил ? smile.gif

Автор: volvo 27.04.2007 1:13

Если удалять/вставлять через Delete/Insert, то ничего не надо добавлять... Само добавится... smile.gif

Автор: Gudzon 27.04.2007 1:28

Цитата(volvo @ 26.04.2007 22:13) *

Если удалять/вставлять через Delete/Insert, то ничего не надо добавлять... Само добавится... smile.gif

было написано delete\insert использовать в нужном месте в строке,нет ли какого-нибудь примера?
просто не так давно занимаюсь с текстовыми файлами и не очень хорошо себе это представляю

Автор: volvo 27.04.2007 1:43

Там же было написано, в каком месте удалять/добавлять... Для одной строки это выглядит ПОЧТИ так:

var
s: string;
p: integer;

begin
s := 'this is the main function in function ...';
repeat
p := pos('function', s);
if p > 0 then begin
delete(s, p, length('function'));
insert('procedure', s, p);
end;
until p = 0;
writeln(s);
end.

(почти - потому, что это будет работать неправильно например на строке: "malfunction" - так что выражение будет немного сложнее...)