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

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

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

Автор: tryno 20.12.2006 2:07

Даны два текстовых файла f1 и f2. Файл f1 содержит произвольный текст.
Слова в тексте разделены пробелами и знаками препинаниями.
Файл f2 содержит не более 30 слов, которые разделены запятыми.
Эти слова образуют пары: каждое второе является синонимом первого.
Заменить в файле f1 те слова, которые можно, их синонимами.
Результат поместить в новый файл.

Автор: Lapp 20.12.2006 9:51

Рекомендую описать файлы как file of char, а потом читать их посимвольно, заполняя слово пока идут подряд буквы. При встече первого небуквенного символа:
- в случае f1: сверять слово со словарем синонимов;
- в случае f2: заносить слово в словарь синонимов.

То есть примерно такая конструкция для чтения:

const
Letters=['A'..'Z','a'..'z'];
var
f:file of char;
c:char;
s:string;
...
s:='';
while not EoF(f) do begin
Read(f,c);
if c in Letters then s:=s+c else if s<>'' then begin
{тут делаем, что надо}
s:=''
end
end;

Разумеется, сначала читаем f2, а потом f1.
Для словаря нужно завести массив строк, можно двумерный - для наглядности алгоритма.

Автор: tryno 20.12.2006 21:20

Если файл описывать как char, то он не находит его и не читает, а если переделать в String все то не работает.

Автор: Lapp 21.12.2006 11:00

Цитата(tryno @ 20.12.2006 18:20) *

Если файл описывать как char, то он не находит его и не читает

Поподробнее, пожалуйста. Приведи свою программу и файл данных.

Автор: tryno 21.12.2006 20:09

Цитата(Lapp @ 21.12.2006 7:00) *

Поподробнее, пожалуйста. Приведи свою программу и файл данных.

Пока что так :


program ten;
uses crt;
const
Letters=['A'..'Z','a'..'z'];
var
f:file of char;
c:char;
s:string;
begin
assign(f,'c:\f1.file');
reset(f);
s:='';
while not eof(f) do begin
read(f,c);
if c in Letters then s:=s+c else
if s<>' ' then begin

s:=' ';
end;
end;
write(' ');
writeln(s);
end.



М
Пользуемся тегами


Файл данных:
Прикрепленный файл  f1.txt ( 25 байт ) Кол-во скачиваний: 517