Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


Задание 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.

 

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

 

 

 

 

 

 





Поделиться с друзьями:


Дата добавления: 2015-10-01; Мы поможем в написании ваших работ!; просмотров: 510 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Слабые люди всю жизнь стараются быть не хуже других. Сильным во что бы то ни стало нужно стать лучше всех. © Борис Акунин
==> читать все изречения...

2193 - | 2115 -


© 2015-2024 lektsii.org - Контакты - Последнее добавление

Ген: 0.007 с.