Advertisement
Guest User

Untitled

a guest
Jun 22nd, 2017
63
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.34 KB | None | 0 0
  1. #include <iostream>
  2. #include <string>
  3. using namespace std;
  4.  
  5. class Item
  6. {
  7.     string name;
  8.  
  9.     public:
  10.     Item() {}
  11.     Item(string name) { this->name = name; }
  12. };
  13.  
  14. class Stack
  15. {
  16.     protected:
  17.     virtual void push(Item* obj) = 0;
  18.     virtual void pop() = 0;
  19.     virtual Item* get() = 0;
  20. };
  21.  
  22. class ArrayStack : public Stack
  23. {
  24.     int maxsize; // rozmiar stosu
  25.     int size; // wskaznik stosu
  26.     Item* tab;
  27.  
  28.     public:
  29.     ArrayStack(int maxsize)
  30.     {
  31.         if(maxsize < 0 )
  32.         {
  33.             // jak ujemna wartosc rozmiaru stosu
  34.             throw "WrongSizeException";
  35.         }
  36.        
  37.         size = 0;  
  38.         this->maxsize = maxsize;
  39.         tab = new Item[maxsize];
  40.     }
  41.    
  42.     ~ArrayStack()
  43.     {
  44.         delete[] tab;
  45.     };
  46.  
  47.     virtual void push(Item* obj) // umieszcza el na stosie
  48.     {
  49.         if(size == maxsize)
  50.          {
  51.              // jak przeplniamy stos
  52.              throw "StackFullException";
  53.          }
  54.          
  55.         else
  56.         {
  57.             tab[size] = *obj;
  58.             size++;
  59.         }
  60.     }
  61.  
  62.     virtual void pop() // uswawa element ze stosu
  63.     {
  64.         if(size == 0)
  65.         {
  66.             // jka juz nie ma co usunac
  67.             throw "StackEmptyException";
  68.         }
  69.         else
  70.         {
  71.             size--;
  72.         }
  73.     }
  74.    
  75.     virtual Item* get()  // zwraca el ze stosu
  76.     {
  77.         if(size == 0)
  78.         {
  79.             // jak bieremy elementa ale go ni ma
  80.              throw "StackEmptyException";
  81.         }
  82.         else
  83.         {
  84.             return &tab[size];
  85.         }
  86.     }
  87. };
  88.  
  89. /*
  90. class DynamicArrayStack : public Stack
  91. {
  92.     int maxsize, size;
  93.     Item* tab;
  94.    
  95.     public:
  96.     DynamicArrayStack(int starting_size = 0)
  97.     {
  98.         starting_size = maxsize;
  99.        
  100.         if(starting_size<0)
  101.         {
  102.             throw "WrongSizeException";
  103.         }
  104.         size = 0;
  105.         tab = new Item[starting_size];
  106.     }
  107.    
  108.     virtual void push(Item* obj) // umieszcza el na stosie
  109.     {
  110.         if(size == maxsize)
  111.         {
  112.             Item *temp = tab;
  113.             tab = new Item[maxsize*2];
  114.             maxsize = maxsize*2;
  115.             for(int i=0; i<maxsize/2; i++)
  116.             {
  117.                 tab[i] = temp[i];
  118.             }
  119.            
  120.             tab[size] = *obj;
  121.             size++;
  122.         }
  123.         else
  124.         {
  125.             tab[size] = *obj;
  126.             size++;
  127.         }
  128.     }
  129.    
  130.     virtual void pop() // uswa el ze stosu
  131.     {
  132.         if(size == 0)
  133.         {
  134.             throw "StackEmptyException";
  135.         }
  136.         else
  137.         {
  138.             size--;
  139.         }
  140.     }
  141.    
  142.     virtual Item* get()  // zwraca el ze stosu
  143.     {
  144.         if(size == 0)
  145.         {
  146.             throw "StackEmptyException";
  147.         }
  148.         else
  149.         {
  150.             return &tab[size];
  151.         }
  152.     }
  153. };
  154.  */
  155.  
  156. int main()
  157. {
  158.     Item Haranas("Zle piwo");
  159.     Item Zywiec("Dobre piwo");
  160.     Item Zubr("Srednie piwo");
  161.     Item Piast("Lokalne piwo");
  162.     Item Heineken("Piwo jasne");
  163.     Item Tyskie("Mocne piwo");
  164.    
  165.     try
  166.     {
  167.        // ArrayStack Stos(-1);
  168.        // ArrayStack Stos(1);
  169.         ArrayStack Stos(5);
  170.         Stos.push(&Haranas);
  171.         Stos.push(&Zywiec);
  172.         Stos.push(&Zubr);
  173.         Stos.push(&Piast);
  174.         Stos.push(&Tyskie);
  175.        
  176.         Stos.pop();
  177.         Stos.pop();
  178.         Stos.pop();
  179.         Stos.pop();
  180.         Stos.pop();
  181.         Stos.pop();
  182.         Stos.pop();
  183.     }
  184.     catch(const char* e)
  185.     {
  186.         cout << e << endl; // wyrzuca odopowieni wyjatek
  187.     }
  188.    
  189.    
  190.      char chuj;
  191.      cin >> chuj;
  192.    
  193.     return 0;
  194. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement