Разработать информационно справочную систему коммерческих магазинов города. Предусмотреть поиск названия магазина и его адрес по названию товара. Результатом поиска является отсортированный в порядке возрастания стоимости искомого товара список магазинов. Данные располагать в динамический памяти в виде связанного списка — Pascal(Паскаль)

uses Wincrt;
type
pmag=^mag;
mag=record
nm:string[15];
am:string[25];
nt:string[20];
sto:real;
ptr:pmag
end;
var
spis:pmag;
i:integer;
err:boolean;
const
st1:mag=(nm: 'TEXNODOM';am: 'Bogova,165';nt: 'televozir Panasonic'; sto:45000;ptr:nil);
st2:mag=(nm: 'Komford';am: 'Geleznodorognay,82';nt: 'televozir LG'; sto:47000;ptr:nil);
st3:mag=(nm: 'Alser';am: 'Kirova,72';nt: 'televozir Sony'; sto:42000;ptr:nil);
 
Procedure p(st:mag);
begin
writeln(st.nm:15, st.am:25, st.nt:20);
end;
 
function pp(s:pmag):boolean;
begin
if s=nil then else begin writeln('magazinov ne naideno');
pp:=true end;
pp:=false
end;
 
Procedure dop(var s:pmag; dat:mag);
var
nov,cur,pr:pmag;
key:integer;
begin
key:=dat.am;
cur:=s;
pr:= nil;
writeln('key = ',key);
new(nov); nov^:=dat;
while (cur <> Nil) and (cur^.am<key) do begin
pr:=cur;
cur:=cur^.prt;
end;
nov^.prt:=cur;
if pr=nil then s:=nov
else pr^.prt:=nov
end;
 
Procedure cht(s:pmag);
var cur:pmag;
begin
writeln('vivod spicok vagazinov'); cur:=s;
if pp (s) then exit;
while cur<>nil do begin
p(cur^);cur:=cur^.ptr;
end
end;
 
Procedure poisk(s:pmag; tnz;string[20]);
var
cur:pmag;
begin
writeln('poisk tnz= ',tnz);
if pp (s) then exit;
cur:=s;
while (cur<>nil)and(cur^.nt<>tnz)do cur:=cur^.ptr;
if cur=nil then writeln('poisk neyspeshen');
else p(cur^);
end;
 
Procedure osv(var s:pmag);
var
cur,pr:pmag;
begin
writeln('dalenie spiska');
if pp(s)then exit;
cur:=s;
pr:=nil;
While cur<>nil do begin
pr:=cur;
cur:=cur^.ptr;
dispose(pr);
end;
s:=nil
end;
 
begin assign(output,'spisok.txt'); rewrite(output);
spis:=nil;
cht(spis); poisk(spis,12); ud(spis,12);
Writeln('Zapolnenie spiska');
dop(spis,st1); dop(spis,st3);
dop(spis,st2); dopcht(spis);
writeln('poisk po nazvaniu tovara');
poisk(spis,82); poisk(spis,165);poisk(spis,72);
writeln('dopolninie spiska');
dop(spis,st3); dop(spis,st1); dop(spis,st2); dop(spis,st2);cht(spis);
Writeln('Ynichtogenie spiska');
osv(spis);
writeln('proverka pystoti spiska');cht(spis);
end.

Leave a Comment

75 + = 82