program listy;
uses crt;
type produkt=record
nazwa:string;
cena:real;
ilosc:integer;
end;
wskel=^element;
element=record
p:produkt;
n:wskel;
end;
hurtwsk=^nazwa_hurt;
nazwa_hurt=record
hurtownia:string;
prod:wskel;
r:byte;
c:real;
h:hurtwsk;
end;
procedure wypisz(lista_hurt:hurtwsk);
var i:byte;
lista1:hurtwsk;
begin
lista1:=lista_hurt;
writeln(' NAZWA CENA ILOSC');
while lista1<>NIL do
begin
writeln('HURTOWNIA ',lista1^.hurtownia);
for i:=1 to 19 do write(chr(196));
write(chr(194));
for i:=1 to 11 do write(chr(196));
write(chr(194));
for i:=1 to 10 do write(chr(196));
writeln;
while (lista1^.prod<>NIL) and (lista1^.h^.prod<>NIL) do
begin
write(lista1^.prod^.p.nazwa:18,' ',chr(179));
write(lista1^.prod^.p.cena:10:2,' ',chr(179));
writeln(lista1^.prod^.p.ilosc:10);
lista1^.prod:=lista1^.prod^.n;
end;
writeln;
lista1:=lista1^.h;
end;
writeln;
end;
procedure wypisz_zam(lista_zam:wskel);
var i:byte;
lista2:wskel;
begin
lista2:=lista_zam;
writeln('ZAMOWIENIE');
writeln(' NAZWA ILOSC');
for i:=1 to 19 do write(chr(196));
write(chr(194));
for i:=1 to 10 do write(chr(196));
writeln;
while lista2<>NIL do
begin
write(lista2^.p.nazwa:18,' ',chr(179));
writeln(lista2^.p.ilosc:10);
lista2:=lista2^.n;
end;
writeln;
end;
procedure wypisz_dost(lista_hurt:hurtwsk);
var i:byte;
lista3:hurtwsk;
begin
lista3:=lista_hurt;
while lista3<>NIL do
begin
writeln('HURTOWNIA ',lista3^.hurtownia);
for i:=1 to 19 do write(chr(196));
write(chr(194));
for i:=1 to 11 do write(chr(196));
write(chr(194));
for i:=1 to 10 do write(chr(196));
writeln;
while (lista3^.prod<>NIL) and (lista3^.h^.prod<>NIL) do
begin
write(lista3^.prod^.p.nazwa:18,' ',chr(179));
write(lista3^.prod^.p.cena:10:2,' ',chr(179));
write(lista3^.prod^.p.ilosc:10);
lista3^.prod:=lista3^.prod^.n;
end;
writeln;
write('DOSTEPNE : ',lista3^.r);
writeln(' CENA : ',lista3^.c:5:2);
lista3:=lista3^.h;
end;
writeln;
end;
var
hurt:text;
f,zam_file:file of produkt;
hurtow,lista_hurt,lista5:hurtwsk;
e,lista_e,lista_zam,zamow,lista4:wskel;
txt1:string;
pr:produkt;
cena:real;
dost:byte;
begin
clrscr;
assign(hurt,'hurt.txt');
reset(hurt);
lista_hurt:=NIL;
while not eof(hurt) do
begin
readln(hurt,txt1);
new(hurtow);
hurtow^.hurtownia:=txt1;
assign(f,txt1);
reset(f);
lista_e:=NIL;
while not eof(f) do
begin
new(e);
read(f,pr);
e^.p:=pr;
e^.n:=lista_e;
lista_e:=e;
end;
close(f);
hurtow^.prod:=lista_e;
hurtow^.h:=lista_hurt;
lista_hurt:=hurtow;
end;
close(hurt);
{wypisz(lista_hurt);}
assign(zam_file,'zam.bin');
reset(zam_file);
lista_zam:=NIL;
while not eof(zam_file) do
begin
new(zamow);
read(zam_file,pr);
zamow^.p:=pr;
zamow^.n:=lista_zam;
lista_zam:=zamow;
end;
readln;
clrscr;
wypisz_zam(lista_zam);
cena:=0;
lista5:=lista_hurt;
while lista_hurt<>NIL do
begin
lista_hurt^.r:=1;
lista_hurt^.c:=0;
while lista_zam<>NIL do
begin
dost:=0;
writeln(lista_zam^.p.nazwa);
writeln(lista_hurt^.prod^.p.nazwa);
while lista_hurt^.prod<>NIL do
begin
writeln(lista_hurt^.prod^.p.nazwa);
if (lista_zam^.p.nazwa=lista_hurt^.prod^.p.nazwa) and (lista_zam^.p.ilosc<=lista_hurt^.prod^.p.ilosc) then
begin
writeln('cos3');
writeln(lista_hurt^.prod^.p.cena:8:2,' ',lista_zam^.p.ilosc);
cena:=lista_hurt^.prod^.p.cena*lista_zam^.p.ilosc;
lista_hurt^.c:=lista_hurt^.c+cena;
dost:=1;
end;
lista_hurt^.prod:=lista_hurt^.prod^.n;
end;
lista_hurt^.r:=lista_hurt^.r*dost;
lista_zam:=lista_zam^.n;
end;
lista_hurt:=lista_hurt^.h;
end;
readln;
wypisz_dost(lista_hurt);
readln;
end.