Пример объединения двух файлов

Из двух отсортированных в убывающем порядке файлов целых чисел IN1.DAT и IN2.DAT получается новый файл OUT.DAT, отсортированный в том же порядке.

Program Merge;

{ Учебный пример:

Создание файла OUT.DAT, отсортированного в убывающем порядке,

объединенного из файлов IN1.DAT и IN2.DAT, так же отсортированных }

Var In1,In2,Out: File of integer;

x1,x2: integer; { вспомогательные переменные - элементы файлов }

Begin

{ Ставим в соответствие внутреннее и внешнее имя файлов }

Assign(In1,'IN1.DAT');

Assign(In2,'IN2.DAT');

Assign(Out,'OUT.DAT');

{$I-} { Запрет контроля ошибок в среде ОС }

{ Открываем и контролируем открытие файлов }

Reset(In1);

If IOResult <>0 Then Begin

Writeln ('Ошибка файла IN1.DAT');

Exit; End;

Reset(In2);

If IOResult <>0 Then Begin

Writeln ('Ошибка файла IN2.DAT');

Exit; End;

Rewrite(Out);

If IOResult <>0 Then Begin

Writeln ('Ошибка создания файла OUT.DAT');

Exit; End;

{$I+} { Обязательно восстанавливаем контроль за ошибками }

{ в цикле While обрабатываются элементы файлов }

While not (EOF(In1) or EOF(In2)) do

Begin

{ Читаем элемент файла, но указатель не перемещаем,

иначе будет пропущен последний элемент }

Read(In1,x1); Seek(In1,FilePos(In1)-1);

Read(In2,x2); Seek(In2,FilePos(In2)-1);

If x1<x2 Then Begin

Write(Out,x2);

Seek(In2,FilePos(In2)+1)

end

else Begin

Write(Out,x1);

Seek(In1,FilePos(In1)+1)

end;

end;

{ Чтение одного из входных файлов закончено –

переписываем конец незаконченного файла в выходной }

While not EOF(In1) do

Begin

Read(In1,x1);

Write(Out,x1);

end;

While not EOF(In2) do

Begin

Read(In2,x2);

Write(Out,x2);

end;

{ Закрытие использованных файлов – хороший стиль программирования}

Close (In1);

Close (In2);

Close (Out);

end.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: