Ввести из текстового файла данные для массива структур, записать их в типизированный файл и выполнить действия в соответствии со своим вариантом.
Описать структуру с именем TOVAR, содержащую следующие поля:
- название товара;
- изготовитель;
- год выпуска;
- гарантия;
- цена.
Выполнить следующие действия:
- выбрать товары указанного производителя, выпущенные после 2002 г. с гарантией больше 12 месяцев и ценой, указанной в пределах, заданных с клавиатуры;
- отсортировать полученный список по алфавиту.
Решение
program KR1_5; {название программы}
{Задание5 выполнено учащимся № группы ФИО № варианта}
Uses
crt; {подключение модуля для работы с экраном}
Type
stroka =string [30];
tovar=record {объявление записи}
ima:string[19]; {название товара}
izg:string[10]; {имя изготовителя}
god:integer; {год выпуска}
gar:integer; {гарантия}
cena:integer; {цена}
end ;
var {объявление переменных}
tov:text;
tovtip:file of tovar;
izgot:string;
z,i,o,np,vp,j,k:integer;
st,p,r:array [1..25] of tovar;
pr:array [1..30] of integer;
temp:tovar;
pos1: byte;
namefilein,namefileout:stroka;
Begin
write(' Введите имя входного файла ' );
readln(namefilein);
write(' Введите имя выходного файла ' );
readln(namefileout);
assign(tov, namefilein);
assign(tovtip, namefileout);
reset(tov);
reset(tovar);
clrscr;
writeln('':30,'Списокэлектротоваров' );
writeln('Наименованиетовара' ,'':5,'Производитель' ,'':7,
'Год' ,'':5, 'Гарантия' ,'':4,'Цена' );
readln;
z:=1;
Repeat
readln(tov,st[z].ima,st[z].izg,st[z].god,st[z].gar,st[z].cena);
writeln(st[z].ima,'':6,st[z].izg,'':7,st[z].god, '':7,st[z].gar,'':7,st[z].cena);
write(tovtip,st[z]);
z:=z+1;
until eof(tov);
for i:=1 to z do
Begin
pos1:=pos(' ',st[i].izg);
while pos1>0 do
Begin
delete(st[i].izg,pos1,1);
pos1:=pos(' ',st[i].izg);
end ;
end ;
writeln('Количествотоваров ',z);
readln;
write('Введитеизготовителя :');
readln(izgot);
write('Введитенижний предел цены :');
readln(np);
write('Введите верхний предел цены :');
readln(vp);
writeln(' Отсортированный список :');
writeln;
k:=0;
for i:=1 to z do
if (st[i].izg=izgot)and(st[i].cena>=np)and(st[i].cena<=vp)and (st[i].god>=2002)and(st[i].gar>=12) then
Begin
k:=k+1;
r[k]:=st[i];
end ;
for j:=1 to k-1 do
for i:=j+1 to k do
if r[i].ima<r[j].ima then
Begin
temp:=r[i];
r[i]:=r[j];
r[j]:=temp;
end ;
writeln('Количествонайденных товаров ',k);
for i:=1 to k do
writeln(r[i].ima,'':6,r[i].izg,'':7,r[i].god, '':7,r[i].gar,'':7,r[i].cena);
readln;
close(tov);
close(tovar);
end .
Результат выполнения программы представлен на рис. 4.5.
Рис. 4.5. Результат выполнения программы