Advertisement
Guest User

Untitled

a guest
Nov 20th, 2019
119
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.76 KB | None | 0 0
  1. #include <iostream>
  2. #include <cstdlib>
  3.  
  4. using namespace std;
  5.  
  6. const int DEFAULT_QUEUE_SIZE = 10;
  7.  
  8. template <class X>
  9. class queue
  10. {
  11.     X *arr;
  12.     int capacity;
  13.     int front;
  14.     int rear;
  15.     int count;
  16.  
  17.     public:
  18.  
  19.     queue(unsigned int size = DEFAULT_QUEUE_SIZE);
  20.  
  21.     void pop();
  22.     void push(X x);
  23.     void showQueue();
  24.  
  25.     X front_element();
  26.     X back_element();
  27.    
  28.     unsigned int size();
  29.  
  30.     bool isEmpty();
  31.     bool isFull();
  32. };
  33.  
  34. template <class X>
  35. queue<X>::queue(unsigned int size)
  36. {
  37.     arr = new X[size];
  38.     capacity = size;
  39.    
  40.     front = 0;
  41.     rear = -1;
  42.     count = 0;
  43. }
  44.  
  45. template <class X>
  46. void queue<X>::pop()
  47. {
  48.     cout << "Pasalinama: " << arr[front] << endl;
  49.  
  50.     front = (front + 1) % capacity;
  51.     count--;
  52. }
  53.  
  54. template <class X>
  55. void queue<X>::push(X element)
  56. {
  57.     cout << "Iterpiama: " << element << endl;
  58.  
  59.     rear = (rear + 1) % capacity;
  60.     arr[rear] = element;
  61.     count++;
  62. }
  63.  
  64. template <class X>
  65. X queue<X>::front_element()
  66. {
  67.     return arr[front];
  68. }
  69.  
  70. template <class X>
  71. X queue<X>::back_element()
  72. {
  73.     return arr[rear];
  74. }
  75.  
  76. template <class X>
  77. unsigned int queue<X>::size()
  78. {
  79.     return count;
  80. }
  81.  
  82. template <class X>
  83. bool queue<X>::isFull()
  84. {
  85.     return (size() == capacity);
  86. }
  87.  
  88. template <class X>
  89. bool queue<X>::isEmpty()
  90. {
  91.     return (size() == 0);
  92. }
  93.  
  94. template <class X>
  95. void queue<X>::showQueue()
  96. {
  97.     for(int i = 0; i < count; i++)
  98.     {
  99.         cout << arr[i] << " ";
  100.     }
  101. }
  102.  
  103. int main()
  104. {
  105.     unsigned int pick_id = 0;
  106.     int element;
  107.  
  108.     queue <int> custom_queue(10);
  109.  
  110.     do
  111.     {
  112.         cout << "Pasirinkite veiksma, kuri norite atlikti:\n\n1. Prideti elementa i eile (eiles gala);\n2. Istrinti elementa is eiles (eiles priekis);\n3. Pamatyti pirma eiles elementa;\n4. Pamatyti paskutini eiles elementa;\n5. Pamatyti visa eile;\n6. Patikrinti ar eile yra tuscia;\n7. Patikrinti ar eile yra pilna;\n8. Baigti darba." << endl;
  113.         cout << endl << "Jusu pasirinkimas: ";
  114.         cin >> pick_id;
  115.         cout << endl;
  116.  
  117.         switch (pick_id)
  118.         {
  119.             case 1:
  120.             {
  121.                 if (custom_queue.isFull())
  122.                 {
  123.                     system("CLS");
  124.                     cout << "Negalite prideti daugiau elementu! Pasiektas max elementu skaicius eileje (" << custom_queue.size() << ")" << endl << endl;
  125.                     break;
  126.                 }
  127.                 else
  128.                 {
  129.                     system("CLS");
  130.                     cout << "Prideti elementa (liko vietu: " << DEFAULT_QUEUE_SIZE - custom_queue.size() << "): ";
  131.                     cin >> element;
  132.  
  133.                     custom_queue.push(element);
  134.  
  135.                     cout << "Eiles turinys: ";
  136.                     custom_queue.showQueue();
  137.                     cout << endl << endl;
  138.  
  139.                     break;
  140.                 }
  141.             }
  142.             case 2:
  143.             {
  144.                 if(custom_queue.isEmpty())
  145.                 {
  146.                     system("CLS");
  147.                     cout << "Negalite pasalinti daugiau elementu! Eileje nera nei vieno elemento!" << endl << endl;
  148.                     break;
  149.                 }
  150.                 else
  151.                 {
  152.                     system("CLS");
  153.  
  154.                     custom_queue.pop();
  155.  
  156.                     cout << "Eiles turinys: ";
  157.                     custom_queue.showQueue();
  158.                     cout << endl << endl;
  159.  
  160.                     break;
  161.                 }
  162.             }
  163.             case 3:
  164.             {
  165.                 if (custom_queue.isEmpty())
  166.                 {
  167.                     system("CLS");
  168.                     cout << "Eileje nera nei vieno elemento!" << endl << endl;
  169.                     break;
  170.                 }
  171.  
  172.                 system("CLS");
  173.  
  174.                 cout << "Pirmas elementas eileje: " << custom_queue.front_element() << endl << endl;
  175.  
  176.                 break;
  177.                
  178.             }
  179.             case 4:
  180.             {
  181.                 if (custom_queue.isEmpty())
  182.                 {
  183.                     system("CLS");
  184.                     cout << "Eileje nera nei vieno elemento!" << endl << endl;
  185.                     break;
  186.                 }
  187.  
  188.                 system("CLS");
  189.  
  190.                 cout << "Paskutinis elementas eileje: " << custom_queue.back_element() << endl << endl;
  191.  
  192.                 break;
  193.             }
  194.             case 5:
  195.             {
  196.                 if (custom_queue.isEmpty())
  197.                 {
  198.                     system("CLS");
  199.                     cout << "Eileje nera nei vieno elemento!" << endl << endl;
  200.                     break;
  201.                 }
  202.  
  203.                 system("CLS");
  204.  
  205.                 cout << "Eiles turinys: ";
  206.                 custom_queue.showQueue();
  207.                 cout << endl << endl;;
  208.  
  209.                 break;
  210.             }
  211.             case 6:
  212.             {
  213.                 if(custom_queue.isEmpty())
  214.                 {
  215.                     system("CLS");
  216.                     cout << "Taip, eile tuscia!" << endl << endl;
  217.                     break;
  218.                 }
  219.                 else
  220.                 {
  221.                     system("CLS");
  222.                     cout << "Ne, eileje yra elementu!" << endl << endl;
  223.                     break;
  224.                 }
  225.             }
  226.             case 7:
  227.             {
  228.                 if (custom_queue.isFull())
  229.                 {
  230.                     system("CLS");
  231.                     cout << "Taip, eileje yra pilna!" << endl << endl;
  232.                     break;
  233.                 }
  234.                 else
  235.                 {
  236.                     system("CLS");
  237.                     cout << "Ne, eile nera pilna!" << endl << endl;
  238.                     break;
  239.                 }
  240.             }
  241.             case 8:
  242.             {
  243.                 cout << "Baigiamas darbas..." << endl;
  244.                 exit(EXIT_SUCCESS);
  245.             }
  246.             default:
  247.             {
  248.                 cout << "Pasirinkite veiksma, kuri norite atlikti:\n\n1. Prideti elementa i eile (eiles gala);\n2. Istrinti elementa is eiles (eiles priekis);\n3. Pamatyti pirma eiles elementa;\n4. Pamatyti paskutini eiles elementa;\n5. Pamatyti visa eile;\n6. Patikrinti ar eile yra tuscia;\n7. Patikrinti ar eile yra pilna;\n8. Baigti darba." << endl;
  249.                 break;
  250.             }
  251.         }
  252.     } while(pick_id != 8);
  253.  
  254.     return 0;
  255. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement