While (not eof (f1)) and (not eof (f2)) do

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);

...



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



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