Advertisement
Rayne_47

ada Arkon 2 zadanie 3

Mar 24th, 2014
114
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ada 2.46 KB | None | 0 0
  1. -- ads
  2. PACKAGE Stosy IS
  3.    
  4.    TYPE Stos(Max_Rozmiar: Integer) IS PRIVATE;
  5.    stos_pusty, stos_pelny: exception;
  6.  
  7.    PROCEDURE Wypisz (S: IN Stos);
  8.    PROCEDURE WlozNaStos(S: IN OUT Stos; L: IN Integer);
  9.    PROCEDURE ZdejmijZeStosu(S: IN OUT Stos; L: OUT Integer);
  10.    FUNCTION Rozmiar (S: IN Stos) RETURN Integer;
  11.    
  12.    PRIVATE
  13.    TYPE Tablica IS ARRAY (Integer RANGE <>) OF Integer;
  14.    
  15.       type stos(max_rozmiar: integer) is record
  16.          Dane: Tablica(1..Max_Rozmiar);
  17.          Wierzcholek: Integer:=0;
  18.       END RECORD;
  19.      
  20. end Stosy;
  21. --------------------------
  22. WITH ada.text_io, ada.Integer_Text_IO;
  23. USE ada.text_io, ada.Integer_Text_IO;
  24.      
  25. package body Stosy is
  26.    PROCEDURE Wypisz(S: IN Stos) IS
  27.    BEGIN
  28.       FOR I IN REVERSE 1..S.Wierzcholek LOOP
  29.          Put(S.Dane(I));
  30.          new_line;
  31.       END LOOP;
  32.      
  33.    END Wypisz;
  34.    
  35.    PROCEDURE WlozNaStos(S: IN OUT Stos; L: IN Integer) IS
  36.    BEGIN
  37.       IF S.Wierzcholek=S.Max_Rozmiar THEN
  38.          RAISE Stos_Pelny; END IF;
  39.          
  40.          s.Wierzcholek:=s.Wierzcholek+1;
  41.          s.dane(s.wierzcholek):=l;
  42.    END WlozNaStos;
  43.    
  44.    PROCEDURE ZdejmijZeStosu(S: IN OUT Stos; L: OUT Integer) IS
  45.    BEGIN
  46.       IF S.Wierzcholek=0 THEN
  47.          RAISE Stos_Pusty; END IF;
  48.          
  49.          L:=S.Dane(S.Wierzcholek);
  50.          s.wierzcholek:=S.Wierzcholek - 1;
  51.      
  52.    END ZdejmijZeStosu;
  53.    
  54.    FUNCTION Rozmiar (S: IN Stos) RETURN Integer IS
  55.         BEGIN
  56.       return s.wierzcholek;
  57.      
  58.    END Rozmiar;
  59.    end Stosy;
  60. ---------------
  61. -- Test_sTosy
  62. WITH ada.text_io, ada.integer_text_io, stosy;
  63. USE Ada.Text_Io, Ada.Integer_Text_Io, Stosy;
  64.  
  65. PROCEDURE Test_Stosy IS
  66.    ZmiennaKtoraJestStosem: Stos(10);
  67.    Liczba: Integer;
  68.    ch: character;
  69.    
  70. BEGIN
  71.    Put("Podaj liczbe: "); Get(Liczba);
  72.    WlozNaStos(ZmiennaKtoraJestStosem, Liczba);
  73.    Put("Podaj liczbe: "); Get(Liczba);
  74.    WlozNaStos(ZmiennaKtoraJestStosem, Liczba);
  75.    Wypisz(ZmiennaKtoraJestStosem);
  76.    New_Line(2);
  77.    
  78.    ZdejmijZeStosu(ZmiennaKtoraJestStosem, Liczba);
  79.    Wypisz(ZmiennaKtoraJestStosem); new_line(2);
  80.    ZdejmijZeStosu(ZmiennaKtoraJEstStosem, Liczba);
  81.    Wypisz(ZmiennaKtoraJestStosem);
  82.    new_line(2);
  83.    LOOP
  84.       Put("Podaj liczbe: "); Get(Liczba);
  85.       WlozNaStos(ZmiennaKtoraJestStosem, Liczba);
  86.       Put("Czy chcesz kontynuowac? T/N");
  87.       get(ch);
  88.    exit when ch='n' or ch='N';
  89.    end loop;
  90.    new_line(2);
  91.    Wypisz(ZmiennaKtoraJEstStosem);
  92.    
  93. end Test_Stosy;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement