Begin
if zap1.priznak < ZAP2.PRIZNAK
Then begin
write (f1, zap1);
read (f1, zap1);
End
Else begin
write (f2, zap2);
read (f2, zap2);
End
end;
if eof (f1) = true { файл f1 закончился }
Then begin
write (f_rez, zap1);
close (f1);
While (not eof(f2)) do
Begin
read (f2, zap2);
write (f_rez, zap2);
end;
close (f2);
End
else if eof (f2) = true { файл f2 закончился }
Then begin
write (f_rez, zap2);
close (f2);
While (not eof(f1)) do
Begin
read (f1, zap1);
write (f_rez, zap1);
end;
close (f1);
end;
close (F_rez);
Полностью данный фрагмент копировать в программу нельзя, есть частные случаи объединения, не описанные в фрагменте!
Далее рассматриваются вариации «на заданную тему»
Вариант 2.
Из добавляемых записей можно сформировать динамический массив в оперативной памяти и рассортировать его. Далее можно упорядоченные добавляемые записи занести в другой файл, после чего объединить оба файла по рассмотренному алгоритму.
Вариант 3.
При наличии должного объёма оперативной памяти и относительно небольших объёмов основного файла и добавляемых записей можно использовать динамические массивы. Можно упорядоченные записи основного файла записать в динамический массив. Из добавляемых записей также можно сформировать свой динамический массив в оперативной памяти и рассортировать его, после чего объединить оба массива по рассмотренному алгоритму, а объединённый массив записать в результатный файл.
Вариант 4.
Записи просто добавляются в конец файла, без учёта сортированности. Далее производится сортировка записей всего файла (возможно с использованием динамического массива записей в оперативной памяти – если её хватает), после чего добавленные записи занимают свои места в общем файле.
1. Удаление записи из файла.
Удаление может быть выполнено по заданному признаку. Им может быть
· порядковый номер записи в файле,
· заданное значение ключевого признака, или
· какой-то другой вариант.
Перед выполнением удаления необходимо предоставить пользователю возможность либо увидеть содержимое файла для выбора удаляемых записей (простейший вариант), либо сформировать перечень иным способом.
{ удаление записей из файла f1 }
{ фрагмент программы }
...
reset(f1);
rewrite (F_temp);
Repeat
read(f1,zap);
if {…запись не удаляется…}
Then write (f_temp, zap)
else {запись не выводится в файл f_temp,
Либо, например, пишется в другой
файл};
until eof(f1);
close(f1);
close (f_temp);
...