Автор: NTL 24.12.2006 20:55
Даны текстовые файлы f и g. Определить, совпадают ли они. Если нет, то получить номер первой строки, в которой файлы f и g различаются. В случае, когда один из файлов имеет N строк и является началом другого более длинного, ответом должен быть число N+1. Помогите, подправить прогрмму, пожалуйста...
Код
var f,g:text;
fff,ggg: string;
i,j,k,ind,k1,k2:integer;
c:char;
flag,z:boolean;{отвечает - если файлы одинаковые}
begin
ClrScr;
Assign(f,'C:\f.txt');{Связываем файл с переменной}
Assign(g,'C:\g.txt');
reset(f);
k1:=1;
while not EOF(f)do {пока не достигнут конец файла}
begin
readln(f,fff); {читаем из файла в массив}
writeln(fff);
inc(k1);
end;
close(f); {закрываем файл}
writeln;
reset(g);
k2:=1;
while not EOF(g)do
begin
readln(g,ggg);
writeln(ggg);
inc(k2);
end;
close(g);
if k1>k2 then k:=k2 {запоиминаем, в каком файле меньше строк}
else if k1<k2 then k:=k1;
flag:=false;
reset(f);reset(g);
z:=Eof(f) or eof(g);
j:=1;
while not z do
begin
if (fff=ggg) then
begin
flag:=true
end else
begin
ind:=j;
flag:=false;
break
end;
inc(j);
end;
if (ind<>1)and(ind<>k) then writeln('Files not equaly. Error in statement #',ind);
writeln('====',ind,'====',k);
if (k1=k2) then
else write('Files is a part of other file, ',k);
if flag=true then writeln('Files equally'); {файлы одинаковые}
close(f);close(g);
readln;
end.
Автор: volvo 24.12.2006 21:02
А поиском воспользоваться? Я выкладывал такую программу сравнения TXT, насколько мне помнится...
Вот тут, например: http://forum.pascal.net.ru/index.php?s=&showtopic=3246&view=findpost&p=30707