Пример использования файлов

Задача. В текстовом файле f.txt записаны (вперемешку) целые числа: поровну отрицательных и положительных. Используя только один вспомогательный файл, переписать в текстовый файл h.txt все эти числа так, чтобы:

1. порядок отрицательных чисел был сохранен;

2. порядок положительных чисел был сохранен;

3. любые два числа, стоящие рядом, имели разные знаки.

Решение

Если бы нам разрешили использовать два вспомогательных файла, мы бы просто переписали все положительные числа в один из них, а все отрицательные - в другой. А затем объединили бы два этих файла. В нашем же случае придется переписать во вспомогательный файл только положительные числа. Затем при "сборке" мы будем считывать из вспомогательного файла "все подряд", а из исходного - только отрицательные числа.

Реализация.

 

program z1;

var f,g,h: text;

k: integer;

begin

assign(f,'f.txt');

assign(g,'g.txt');

assign(h,'h.txt');

{Переписываем положительные числа в доп.файл}

reset(f);

rewrite(g);

while not eof(f) do

begin read(f,k);

if k>0 then write(g,k,' ');

end;

{Собираем числа в новый файл h.txt}

reset(f); {Возвращаем указатель на начало файла f}

reset(g);

rewrite(h);

while not eof(g) do

begin read(g,k);

write(h,k,' ');

repeat

read(f,k)

until k<0;

write(h,k,' ');

end;

close(f);

close(g);

close(h);

end.