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

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

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

Автор: 18192123 8.01.2007 20:43

Даны файлы f, g. Записать в файл h все совпадающие строки файлов f и g, если таких нет, то в файл h записать строки из файлов f и g, чередуя их, начиная с первой из файла f.

Одно дело, когда я ищу одинаковые слова, а вот как со строками и с их чередованием, понять не могу

.....

Объясните, пожалуйста!

Автор: Archon 8.01.2007 21:10

А по номерам строки должны совпадать? Или только по значению?

Автор: мисс_граффити 8.01.2007 21:12

открываешь f, g для чтения, h - для записи.
читаешь первую строку из f и первую из g. сравниваешь. если не совпали, читаешь вторую из g (из f ничего не читаешь - работаешь по-прежнему с первой) и т.д.
нашла совпадение - записала в h

если ни одного совпадения не было, читаешь первую из f, пишешь в h. читаешь первую из g, пишешь в h. читаешь вторую из f...

Автор: Archon 8.01.2007 21:25

const
file_name_f = 'f.txt';
file_name_g = 'g.txt';
file_name_h = 'h.txt';

var
f, g, h : text;
s1, s2 : string;
no_equal : boolean;

begin
assign (f, file_name_f);
assign (g, file_name_g);
assign (h, file_name_h);
reset (f);
reset (g);
rewrite (h);
no_equal := true; {по умолчанию предпологаем, что совпадений не будет}
while not (eof(f) or eof(g)) do {пока хоть один файл не кончится выполняем цикл}
begin
readln (f, s1); {вот это и есть считывание строки из файла}
readln (g, s2);
if s1 = s2 then
begin
writeln (h, s1); {если строки одинаковые записываем в h}
no_equal := false; {совпадения, получается, есть}
end;
end;
if no_equal then {если совпадений не было}
begin
reset (f); {это нужно, чтобы указатель на начало файла переместить}
reset (g);
while not (eof(f) or eof(g)) do
begin
readln (f, s1);
readln (g, s2);
writeln (h, s1);
writeln (h, s2);
end;
end;
close (f);
close (g);
close (h);
end.

Автор: all natural alternative to viagr 3.11.2021 5:24

Finasteride Andorra Comprar Propecia

Автор: hydroxychloroquine azithromycin 5.12.2021 17:20

Cialis 37 Anni