PROCEDURE Wypisz

PACKAGE Kol11_01pak IS
TYPE Rzecz IS PRIVATE;
TYPE Spis IS LIMITED PRIVATE;
PROCEDURE Get(R: OUT Rzecz);

PROCEDURE Put(R: IN Rzecz);

PROCEDURE Wypisz (K: IN Spis);
PROCEDURE Dodaj (K: IN OUT Spis; Ind: Integer);
PROCEDURE UsunSasiedniePowtorzone (K: IN OUT Spis);
PROCEDURE UsunPowtorzone (K: IN OUT Spis);
PRIVATE
TYPE Rzecz IS RECORD
      ID: Natural;
      Licznik: Natural;
   END RECORD;
TYPE Elem;
TYPE Wsk_Elem IS ACCESS Elem;
TYPE Elem IS RECORD
      Dane: Rzecz;
      Nast: Wsk_elem;
END RECORD;
TYPE Spis IS LIMITED RECORD
Pocz: Wsk_Elem:=NULL;
      END RECORD;
 END Kol11_01pak;

   PROCEDURE Get (R: OUT Rzecz) IS
   BEGIN
      Put("Podaj ID rzeczy "); Get(R.ID);
      Put("Podaj licznik "); Get(R.Licznik);  New_line;
      END Get;

   PROCEDURE Put(R: IN Rzecz) IS
   BEGIN
      Put("("); Put(R.ID,1); Put(","); Put(R.Licznik,1);
      Put(") ");
   END Put;
   
-- procedura zwalniajaca pamiec
   PROCEDURE delete IS
      New Ada.Unchecked_Deallocation(Elem, wsk_elem);

   PROCEDURE Wypisz(K: IN Spis) IS
      pom: wsk_elem;
   BEGIN
      Pom:=K.Pocz; Put("Pocz->");
      WHILE Pom/=NULL LOOP
         Put(Pom.Dane); Put(",");
         pom:=pom.nast;
      END LOOP;
      Put("NULL");
   END Wypisz;
   PROCEDURE Dodaj (K: IN OUT Spis; Ind: Integer) IS
      Pom, Nowy, Wsteczny, ostatni: Wsk_Elem;
      Czy_Sa:Boolean;
      R: rzecz;
   BEGIN
      Pom:=K.Pocz;
      czy_sa:=false;
      WHILE Pom/=NULL Loop
         IF Pom.Dane.ID=Ind THEN
            Czy_Sa:=True;
            exit;
         END IF;
         Wsteczny:=Pom;
         Pom:=Pom.Nast;
      END LOOP;
      IF Czy_Sa=True THEN
         Ostatni:=Pom;
         IF Pom.Nast/=NULL THEN
         WHILE Ostatni/=NULL LOOP
               IF Ostatni.Nast=NULL THEN
                  IF Wsteczny=NULL THEN
                     K.Pocz:=Pom.Nast;   

                     ELSE
               Wsteczny.Nast:=Pom.Nast; 
               END IF;
               Ostatni.Nast:=Pom;       
                  Pom.Nast:=NULL;           

                     EXIT;
               END IF;
               Ostatni:=Ostatni.Nast;
            END LOOP;
            END IF;
         Pom.Dane.Licznik:=Pom.Dane.Licznik+1; 
           ELSE
         R.ID:=Ind;
         R.Licznik:=1;
         Nowy:= NEW Elem'(R,NULL);
         Pom:=K.Pocz;
         IF Pom=NULL THEN
            K.Pocz:=Nowy;
            ELSE
         WHILE Pom/=NULL LOOP
            IF Pom.Nast=NULL THEN
                  Pom.Nast:=Nowy;
                  exit;
               END IF;
            Pom:=Pom.Nast;
         END LOOP;
         END IF;
         END IF;
   END Dodaj;

PROCEDURE Wstaw (S: IN out sznur;p: in integer) IS
   Pom1, pom2:Wsk_Box;
BEGIN
   IF S.Pocz=NULL THEN
      S.Pocz:= NEW Box'(p, NULL);
   ELSE
      Pom1:=NULL;Pom2:=S.Pocz;
      WHILE pom2/=null and then Pom2.Liczba<=P LOOP
         Pom1:=Pom2;
         Pom2:=Pom2.Nast;
      END LOOP;
      if pom1=null then
      S.Pocz:= NEW Box'(p, pom2);

      else
      pom1.nast:=NEW Box'(p, pom2);
      end if;
   END IF;
   end wstaw;

PROCEDURE Usun (S: IN OUT Sznur;P: IN Integer) IS
   Pom1, Pom2:Wsk_Box;
BEGIN
   IF S.Pocz=NULL THEN RETURN;END IF;
   Pom1:=NULL; Pom2:=S.Pocz;
   WHILE Pom2/=NULL AND THEN Pom2.Liczba<=P LOOP
      IF Pom1=NULL THEN
         S.Pocz:=Pom2.Nast;
         Zwolnij (Pom2);
         Pom2:=S.Pocz;
      ELSE
         Pom1.Nast:=Pom2.Nast;
         Zwolnij(Pom2);
         Pom2:=Pom1.Nast;
      END IF;
      end loop;
   END Usun;


Wyszukiwarka

Podobne podstrony:
PROCEDURA OLUP
06 pamięć proceduralna schematy, skrypty, ramyid 6150 ppt
LAB PROCEDURY I FUNKCJE
proces nbsp pomocy nbsp, nbsp strategie nbsp i nbsp procedury nbsp SWPS[1][1] 4
Procedura systemowa Nadzór nad produktami niezgodnymi
procedura wypadek
procedura bada ewaluacyjnych - program zaj , procedura badań ewaluacyjnych
Niewydolność serca, Studia - ratownictwo medyczne, 3 rok, Zawansowane procedury ratunkowe
Grill - procedura postępowania
Procedury check in i check out oraz kompleksowa obsługa, powtórki do egzaminów
Procedury do redukcji zachowań niepożądanych wykorzystywane, terapia zajęciowa
nazwy w tabeli wyników, Studia - ratownictwo medyczne, 3 rok, Zawansowane procedury ratunkowe
Procedura Dopuszczenia Do Obrotu, STUDIA - Kierunek Transport, STOPIEŃ I, MATERIAŁY DODATKOWE
2. Typolgia nieprzystosowania społecznego, IPSIR, resocjalizacja w instytucjach zamknietych, statyst
harmon wspolpr, Awans zawodowy, Procedury i pomoc
mpdm procedury, Akademia morska Szczecin, IV semestr, BN
proced.wyp.ucz.2, BHP 2014
Ciało obce w drogach oddechowych-dorośli, Studia - ratownictwo medyczne, 3 rok, Zawansowane procedur

więcej podobnych podstron