constk

For Mitya

Jan 25th, 2021 (edited)
631
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <iostream>
  2. #include <utility>
  3.  
  4. using namespace std;
  5.  
  6. const int MAX = 10;
  7.  
  8. class Stack
  9. {
  10. protected:
  11.     int st[MAX];
  12.     int size = 0;
  13.  
  14. public:
  15.     Stack() : size(0) {}
  16.  
  17.     void push(int var)
  18.     {
  19.         if (size == MAX)
  20.             throw runtime_error("Stack overflow");
  21.         st[size] = var;
  22.         size++;
  23.     }
  24.  
  25.     int pop()
  26.     {
  27.         if (!size)
  28.             throw runtime_error("Stack is empty");
  29.  
  30.         --size;
  31.         return st[size + 1];
  32.     }
  33. };
  34.  
  35. class PairStack : public Stack
  36. {
  37. private:
  38.     int st2[MAX];
  39.  
  40. public:
  41.     PairStack() { size = 0; }
  42.  
  43.     void push(pair<int, int> var)
  44.     {
  45.         if (size == MAX)
  46.             throw runtime_error("Stack overflow");
  47.  
  48.         st[size] = var.first;
  49.         st2[size] = var.second;
  50.        
  51.         size++;
  52.     }
  53.  
  54.     pair<int, int> pop()
  55.     {
  56.         if (!size)
  57.             throw runtime_error("Stack is empty");
  58.  
  59.         --size;
  60.         return pair<int, int>(st[size+1], st2[size+1]);
  61.     }
  62. };
  63.  
  64. int main()
  65. {
  66.     pair<int, int> para(5, 10);
  67.     PairStack pairStack;
  68.  
  69.     for (int i = 0; i != MAX; ++i)
  70.         pairStack.push(para);
  71.  
  72.     try {
  73.         pairStack.push(para);
  74.     }
  75.     catch (runtime_error & e)
  76.     {
  77.         cout << e.what() << endl;
  78.     }
  79.  
  80.     for (int i = 0; i != MAX; ++i)
  81.     {
  82.         para = pairStack.pop();
  83.         cout << para.first << " - " << para.second << endl;
  84.     }
  85.  
  86.     PairStack pairStack2;
  87.  
  88.     try {
  89.         pairStack2.pop();
  90.     }
  91.     catch (runtime_error & e)
  92.     {
  93.         cout << e.what() << endl;
  94.     }
  95.  
  96.     system("pause");
  97.     return 0;
  98. }
RAW Paste Data