You are on page 1of 1

-----sklep

procedure dodaj(s:in out spis_towarow; t:in towar)is


pred:node_pointer:=null;
succ:node_pointer:=s.head;
begin
while succ /= null and then
t.kod_towaru > succ.dane.kod_towaru loop
pred:=succ;
succ:=succ.next;
end loop;
if succ /= null and then
succ.dane.kod_towaru = t.kod_towaru then
succ.dane.liczba_sztuk:=succ.dane.liczba_sztuk+t.liczba_sztuk;
else
if pred /= null then
pred.next:=new node'(t, succ);
else
s.head:=new node'(t, succ);
end if;
end if;
end dodaj;

procedure odejmij(s1:in out spis_towarow; s2:in spis_towarow)is


pred:node_pointer:=null;
succ:node_pointer:=s1.head;
aktualny:node_pointer:=s2.head;
roznica:float:=0.0;
begin
while aktualny /= null loop
while succ /= null and then
aktualny.dane.kod_towaru /= succ.dane.kod_towaru loop
pred:=succ;
succ:=succ.next;
end loop;
if succ /= null then
roznica:=succ.dane.liczba_sztuk-aktualny.dane.liczba_sztuk;
if roznica<=0.0 then
if pred /= null then
pred.next:=succ.next;
else
s1.head:=succ.next;
free(succ);
end if;
else
succ.dane.liczba_sztuk:=roznica;
end if;
end if;
aktualny:=aktualny.next;
end loop;
end odejmij;
------magazyn
procedure dodaj(s:in out spis_towarow; t:in towar; i:in rplus)is
pred:node_pointer:=null;
succ:node_pointer:=s.head;
begin
while succ /= null and then
t.kod_towaru > succ.dane.kod_towaru loop
pred:=succ;
succ:=succ.next;
end loop;
if pred /= null then
pred.next:=new node'(t, i, succ);
else
s.head:=new node'(t, i, succ);
end if;
end dodaj;

procedure kompresuj(s:in out spis_towarow)is


p:node_pointer:=s.head;
temp:node_pointer:=null;
begin
if p /= null then
while p.next /= null loop
if p.dane.kod_towaru = p.next.dane.kod_towaru then
p.ilosc_sztuk:=p.ilosc_sztuk+p.next.ilosc_sztuk;
temp:=p.next;
p.next:=p.next.next;
free(temp);
else
p:=p.next;
end if;
end loop;
else
put("spis jest pusty!");
end if;
end kompresuj;

You might also like