PROCEDURE Get (
T : OUT Towar) IS
BEGIN
Put("podaj kod towaru: ");
Get(T.Kod_Towaru);
Put("podaj ilosc towaru: ");
Get(T.Ilosc);
END Get;
PROCEDURE Put (
T : IN Towar) IS
BEGIN
Put(" ");
Put(T.Kod_Towaru,0);
Put(",il.");
Put(T.Ilosc,Exp=>0,Aft=>2);
Put(" ");
END Put;
PROCEDURE Wypisz (
L : Spis_Towarow) IS
Pom : Wsk_Elem;
BEGIN
Pom:=L.Pocz;
Put("Pocz->");
WHILE Pom/=NULL LOOP
Put(Pom.Dane);
Put("->");
Pom:=Pom.Nast;
END LOOP;
Put("NULL");
END Wypisz;
PROCEDURE Wstaw (
L : IN OUT Spis_Towarow;
T : IN Towar) IS
Nowy,
Pom : Wsk_Elem;
BEGIN
IF L.Pocz=NULL OR ELSE T<L.Pocz.Dane THEN
L.Pocz:=NEW Elem'(T,L.Pocz);
ELSE
Nowy:=NEW Elem'(T,NULL);
Pom:=L.Pocz;
WHILE Pom.Nast/=NULL AND THEN Pom.Nast.Dane<T LOOP
Pom:=Pom.Nast;
END LOOP;
Nowy.Nast:=Pom.Nast;
Pom.Nast:=Nowy;
END IF;
END Wstaw;
PROCEDURE Wstaw_Roznowartosciowo (
L : IN OUT Spis_Towarow;
T : IN Towar) IS
Nowy,
Pom : Wsk_Elem;
BEGIN
IF L.Pocz=NULL OR ELSE T<L.Pocz.Dane THEN
L.Pocz:=NEW Elem'(T,L.Pocz);
ELSE
Nowy:=NEW Elem'(T,NULL);
Pom:=L.Pocz;
--sumujemy ilosc pierwszego towaru
IF Pom.Dane.Kod_Towaru=T.Kod_Towaru THEN
pom.dane.ilosc:=T.ilosc+pom.dane.ilosc;
ELSE
WHILE Pom.Nast/=NULL AND THEN Pom.Nast.Dane<T LOOP
Pom:=Pom.Nast;
END LOOP;
--sumujemy ilosc kolejnych towarow o tym samym kodzie
IF pom.nast/=NULL AND THEN T.Kod_Towaru=Pom.Nast.Dane.Kod_Towaru THEN
pom.nast.dane.ilosc:=t.ilosc+pom.nast.dane.ilosc;
ELSE
Nowy.Nast:=Pom.Nast;
Pom.Nast:=Nowy;
END IF;
END IF;
END IF;
END Wstaw_roznowartosciowo;