Помощь - Поиск - Пользователи - Календарь
Полная версия: Обработка текстовых файлов
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
NTL
Даны текстовые файлы f и g. Определить, совпадают ли они. Если нет, то получить номер первой строки, в которой файлы f и g различаются. В случае, когда один из файлов имеет N строк и является началом другого более длинного, ответом должен быть число N+1. Помогите, подправить прогрмму, пожалуйста... give_rose.gif
Код

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
А поиском воспользоваться? Я выкладывал такую программу сравнения TXT, насколько мне помнится...

Вот тут, например: Сравнение текстовых файлов
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.