Задание 9. работа с упорядоченными файлами

Подготовить список из N наименований товаров. Конкретное значение N указано в варианте. Информация о каждом товаре содержит:

1. Название товара.

2. Цену.

3. Год выпуска.

4. Количество.

Список должен быть упорядочен по одному из параметров, указанных в конкретном варианте. Сведения по каждому товару необходимо представить в виде записи.

Разработать программу, которая заносит во внешний файл записи упорядоченного списка, и программу, которая добавляет в сформированный внешний файл данные об М товарах, при этом, не нарушая упорядоченности исходного файла. Если среди добавляемых товаров встречается товар, сведения о котором в файле уже есть, то необходимо их обновить, т. е. старую запись исключить.

Товары упорядочены по неубыванию года выпуска, N=10, M=3.

Program dom9;

type zap=record

name: string;

cost: integer;

date: 1900..2222;

quantity: integer;

end;

fpk=file of zap;

var fizap,rb:fpk; s1,a,b:zap; i,j:integer;

procedure PrintFile(fizap:fpk);

var a:zap; i:integer; s:string;

begin

i:=1;

reset(fizap);

repeat

read(fizap,a);

writeln(i:2,' Наименование: ',a.name,', цена: ', a.cost, ', дата: ',a.date,', кол-во: ',a.quantity);

i:=i+1;

until eof(fizap);

close(fizap);

end;

procedure InSortfile(var f: file of zap; newrec: zap);

var r: zap; g: file of zap;

begin

assign(g,'l.dat');

rewrite(g);

reset(fizap);

while not eof(f) do

begin read (f,r);

if newrec.quantity < r.quantity then break

else if(newrec.name <> r.name) then write(g,r)

end;

write(g,newrec);

if not eof(f) then if(newrec.name <> r.name) then write(g,r);

while not eof(f) do

begin read (f,r);

if(newrec.name <> r.name) then write(g,r);

end;

rewrite(fizap);

reset(g);

repeat

read(g,a);

write(fizap,a);

until eof(g);

close(g);

close(fizap);

erase(g);

end;

begin

assign(fizap,'res.dat'); rewrite(fizap);

s1.name:='молоток';

s1.cost:=1500;

s1.date:=1989;

s1.quantity:=15;

write(fizap,s1);

s1.name:='пила';

s1.cost:=21500;

s1.date:= 1990;

s1.quantity:=212;

write(fizap,s1);

s1.name:='отвертка';

s1.cost:=500;

s1.date:=1998;

s1.quantity:=50;

write(fizap,s1);

s1.name:='линейка';

s1.cost:=200;

s1.date:=2000;

s1.quantity:=165;

write(fizap,s1);

s1.name:='плоскогубцы';

s1.cost:=1500;

s1.date:=2001;

s1.quantity:=78;

write(fizap,s1);

s1.name:='уровень';

s1.cost:=1000;

s1.date:=2005;

s1.quantity:=710;

write(fizap,s1);

s1.name:='нивелир';

s1.cost:=21500;

s1.date:=2005;

s1.quantity:=76;

write(fizap,s1);

s1.name:='лобзик';

s1.cost:=500;

s1.date:=2011;

s1.quantity:=577;

write(fizap,s1);

s1.name:='шпатель';

s1.cost:=200;

s1.date:=2012;

s1.quantity:=185;

write(fizap,s1);

s1.name:='шуруповерт';

s1.cost:=1000;

s1.date:=2012;

s1.quantity:=100;

write(fizap,s1);

s1.name:='топор';

s1.cost:=21500;

s1.date:=2013;

s1.quantity:=126;

write(fizap,s1);

s1.name:='трубогиб';

s1.cost:=500;

s1.date:=2014;

s1.quantity:=124;

write(fizap,s1);

s1.name:='фрезер';

s1.cost:=200;

s1.date:=2015;

s1.quantity:=274;

write(fizap,s1);

close(fizap);

writeln(' -- до вставки --');

PrintFile(fizap);

s1.name:='карандаш';

s1.cost:=200;

s1.date:=2005;

s1.quantity:=5;

InSortfile(fizap, s1);

writeln(' -- после вставки `карандаш` --');

PrintFile(fizap);

s1.name:='пила';

s1.cost:=28400;

s1.date:=2004;

s1.quantity:=10;

InSortfile(fizap, s1);

writeln(' -- после вставки `пила` --');

PrintFile(fizap);

s1.name:='молоток';

s1.cost:=1200;

s1.date:=2015;

s1.quantity:=22;

InSortfile(fizap, s1);

writeln(' -- после вставки `молоток` --');

PrintFile(fizap);

s1.name:='пробник';

s1.cost:=3500;

s1.date:=2010;

s1.quantity:=254;

InSortfile(fizap, s1);

writeln(' -- после вставки `пробник` --');

PrintFile(fizap);

s1.name:='бензопила';

s1.cost:=1200;

s1.date:=2015;

s1.quantity:=122;

InSortfile(fizap, s1);

writeln(' -- после вставки `бензопила` --');

PrintFile(fizap);

s1.name:='перфоратор';

s1.cost:=3500;

s1.date:=2010;

s1.quantity:=54;

InSortfile(fizap, s1);

writeln(' -- после вставки `перфоратор` --');

PrintFile(fizap);

end.

Результаты выполнения программы:

задание 9. работа с упорядоченными файлами - student2.ru

задание 9. работа с упорядоченными файлами - student2.ru

задание 9. работа с упорядоченными файлами - student2.ru

задание 9. работа с упорядоченными файлами - student2.ru

Наши рекомендации