Advertisement
filip710

AnalizaOOPLV5-Z1

Dec 12th, 2016
54
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.14 KB | None | 0 0
  1. /*Proširi drugi zadatak iz vježbe br. 3 (predložak klase stog) tako da se podigne
  2. iznimka StogExc izvedena iz osnovne klase exception u slučaju da se pokuša
  3. umetnuti element na pun stog ili skinuti element sa praznog stoga. Napisati
  4. odgovarajuću main funkciju, koja će sadržavati blokove pokušaja i hvatanja*/
  5.  
  6. #include<iostream>
  7. #include<string>
  8. using namespace std;
  9.  
  10. class StogExc : public exception
  11. {
  12. private:
  13.     char *msg;
  14. public:
  15.     StogExc(char *text) : msg(text) {};
  16.     virtual const char* what() const throw() {
  17.         return msg;
  18.     }
  19. };
  20.  
  21. class StogPrazan : public StogExc {
  22. public:
  23.     StogPrazan() : StogExc("Stog je prazan!") {};
  24. };
  25.  
  26. class StogPun : public StogExc {
  27. public:
  28.     StogPun() : StogExc("Stog je pun!") {};
  29. };
  30.  
  31. template <class Tip>
  32. class Stack {
  33. private:
  34.     Tip *array;
  35.     int sp;
  36.     int broj_elemenata;
  37. public:
  38.     Stack(int n) {
  39.         sp = 0;
  40.         broj_elemenata = n;
  41.         array = new Tip[broj_elemenata];
  42.     }
  43.     Stack(const Stack& ref)
  44.     {
  45.         broj_elemenata = ref.broj_elemenata;
  46.         array = new int[broj_elemenata];
  47.         for (int i = 0; i<broj_elemenata; i++)
  48.         {
  49.             array[i] = ref.array[i];
  50.         }
  51.     }
  52.     ~Stack() {
  53.         delete[] array;
  54.     }
  55.     Stack& operator= (const Stack& ref)
  56.     {
  57.         if (this != &ref)
  58.         {
  59.             broj_elemenata = ref.broj_elemenata;
  60.             array = new int[broj_elemenata];
  61.             for (int i = 0; i < broj_elemenata; i++)
  62.             {
  63.                 array[i] = ref.array[i];
  64.             }
  65.         }
  66.         return *this;
  67.     }
  68.  
  69.     void push(Tip x) {
  70.         if (sp == broj_elemenata)
  71.             throw StogPun();
  72.         array[sp++] = x;
  73.     }
  74.     Tip pop() {
  75.         if (sp == 0)
  76.             throw StogPrazan();
  77.         return array[--sp];
  78.     }
  79.  
  80. };
  81.  
  82. int main()
  83. {
  84.     int n;
  85.     double x;
  86.     cout << "Unesi broj elemenata stoga: ";
  87.     cin >> n;
  88.     try {
  89.         Stack<double> s1(n);
  90.         for (int i = 0; i < n; i++) {
  91.             cout << i << ". element: ";
  92.             cin >> x;
  93.             s1.push(x);
  94.         }
  95.  
  96.         s1.push(12);
  97.         s1.pop();
  98.         s1.pop();
  99.         s1.pop();
  100.     }
  101.     catch (StogPrazan &iznimka) {
  102.         cout << iznimka.what() << endl;
  103.     }
  104.     catch (StogPun &iznimka) {
  105.         cout << iznimka.what() << endl;
  106.     }
  107.     catch (exception &StogExc) {
  108.         cout << StogExc.what() << endl;
  109.     }
  110.     catch (...) {
  111.         cout << "Error!" << endl;
  112.     }
  113.  
  114.     system("pause");
  115.     return 0;
  116. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement