Файл содержит сведения об ассортименте игрушек в магазине. Вывести информацию по определенным критериям

Каждая запись содержит поля: название игрушки, цена, количество, возрастные границы (2-5);

Написать программу, которая позволяет:
1. Сформировать файл;
2. Выводит список игрушек, которые подходят детям от 1 года до 3 лет в алфавитном порядке;
3. Выводит стоимость самой дорогой игрушки и ее наименование.

code: #pascal
program PascalGuru;
uses crt;
Type vozrgr=2..5;
     igrushki=record
      nazv:string;
      cena:real;
      kol:integer;
      vg:vozrgr;
     end;
 
var f:text;
    nazv:string;
    cena:real;
    kol:integer;
    vg:vozrgr;
 
procedure menu; forward;
 
procedure p1;
var n,i:integer;
begin
clrscr;
assign(f,'db.txt'); rewrite(f);
write('Skoliko zapisei xotite dobaviti: '); readln(n);
for i:=1 to n do
    begin
    clrscr;
    writeln('Zapisi #',i,':');
    write('Nazvanie igrushki: '); readln(nazv); writeln(f,nazv);
    write('Tsena: '); readln(cena); writeln(f,cena:0:2);
    write('Kolichestvo: '); readln(kol); writeln(f,kol);
    write('Vozrastnye granitsy (2-5): '); readln(vg); writeln(f,vg);
    end;
writeln('Dannye uspeshno zapisany...');
close(f); readln; menu; end;
{--------------------------------------------}
procedure exchange(var a,b:string);
var c:string;
begin
c:=a; a:=b; b:=c; end;
procedure exchangevg(var a,b:vozrgr);
var c:vozrgr;
begin
c:=a; a:=b; b:=c; end;
 
 
procedure p2;
var n,nn,i,j:integer;
    massiv:array[1..30] of igrushki;
    swop:boolean;
    l,s:string;
begin
clrscr;
assign(f,'db.txt'); reset(f);
n:=0;
while not eof(f) do
begin
     readln(f,nazv);readln(f,cena);
     readln(f,kol); readln(f,vg);
     if vg<=3 then
       begin
       inc(n);
       massiv[n].nazv:=nazv; massiv[n].vg:=vg;
       end;
end;
 
nn:=n;
 
repeat
swop:=false;
for j:=1 to n-1 do                  BEGIN
i:=1;
l:=massiv[j].nazv;
s:=massiv[j+1].nazv;
While (i<=3)and(l[i]=s[i]) do inc(i);
If i>3 then writeln('the same')
 else
    if ord(l[i])>ord(s[i]) then
    begin exchange(massiv[j+1].nazv,massiv[j].nazv); exchangevg(massiv[j+1].vg,massiv[j].vg);  swop:=true; end;
                                    END;
n:=n-1;
until not swop;
{***}
for i:=1 to nn do writeln(massiv[i].nazv,' * ',massiv[i].vg);
 
close(f); readln; menu; end;
{--------------------------------------------}
 
procedure p3;
var n,i:integer;
    massiv:array[1..30] of igrushki;
    max:real;
    maxn:string;
 
begin
clrscr;
assign(f,'db.txt'); reset(f);
n:=0;
while not eof(f) do
      begin
      readln(f,nazv);readln(f,cena);
      readln(f,kol); readln(f,vg);
      inc(n);
      massiv[n].nazv:=nazv; massiv[n].cena:=cena;
      end;
 
max:=massiv[1].cena; maxn:=massiv[1].nazv;
for i:=2 to n do
if  massiv[i].cena>max then begin max:=massiv[i].cena; maxn:=massiv[i].nazv;  end;
 
writeln(maxn,' - stoit ',max:0:2);
close(f); readln; menu; end;
{--------------------------------------------}
 
procedure menu;
var option:integer;
begin
clrscr;
writeln('------');writeln('-MENU-'); writeln;
writeln('1 Sformirovati fail');
writeln('2 Vyvodit spisok igrushek, podhodyascie detyam ot 1 goda do 3 let');
writeln('3 Vyvodit stoimosti samoi dorogoi igrushki i ee naimenovanie');
writeln; writeln;
writeln('0 EXIT');
readln(option);
if option=1 then p1;
if option=2 then p2;
if option=3 then p3;
 
end;
 
{*******************************************}
begin
menu;
end.      
Поделиться:

Похожие статьи: