Advertisement
spacerose

очередь на массиве

Oct 5th, 2020 (edited)
129
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.46 KB | None | 0 0
  1. #include <iostream>
  2. #include <string>
  3. using namespace std;
  4. struct Queue {
  5.  
  6.     float* arr;
  7.     int max_size = 7;
  8.  
  9.     int count = 0;
  10.  
  11.  
  12.     void push(float item) {
  13.         if (count == max_size)
  14.         {
  15.             cout << "Очередь переполнена! Добавление невозможно\n";
  16.         }
  17.         else
  18.         {
  19.             float* temp= new float[count];
  20.             temp = arr;
  21.             arr = new float[count + 1];
  22.             for (int i = 0; i < count; i++) arr[i] = temp[i];
  23.             arr[count] = item;
  24.             count++;
  25.             if (count > 1) delete[] temp;
  26.         }
  27.     }
  28.  
  29.     void pop() {
  30.         if (count==0)
  31.         {
  32.             cout << "Очередь пуста! Удаление невозможно\n";
  33.         }
  34.         else
  35.         {
  36.             float item = arr[0];
  37.             float* temp=new float[count-1];
  38.             count--;
  39.             for (int i = 0; i < count; i++) temp[i] = arr[i + 1];
  40.             if (count > 0) delete[] arr;
  41.             arr = temp;
  42.             cout << item << endl;
  43.         }
  44.     }
  45.    
  46.     void print() {
  47.         if (count > 0)
  48.             cout << arr[0]<<endl;
  49.         else
  50.             cout<<"Очередь пуста! Вывод невозможен\n";
  51.     }
  52.  
  53.     void empty() {
  54.         if (count == 0)
  55.             cout << "Очередь пуста\n";
  56.         else
  57.             cout << "Очередь не пуста\n";
  58.     }
  59.  
  60.     void full() {
  61.         if (count == max_size)
  62.             cout << "Очередь полна\n";
  63.         else
  64.             cout << "Очередь не полна\n";
  65.     }
  66.  
  67.     void end() {
  68.         for (int i = 0; i < count; i++)
  69.             cout << arr[i] <<'  ';
  70.         cout << endl;
  71.     }
  72.  
  73. };
  74.  
  75. int main()
  76. {
  77.     setlocale(LC_ALL, "Rus");
  78.     Queue* Q=new Queue;
  79.     string command;
  80.     float number;
  81.     cout << "Введите команды управления очередью:\nPUSH - добавление элементa\nPOP - удаление элемента из очереди и его вывод\nPRINT - вывод первого в очереди\nEMPTY - проверка пустоты очереди\nFULL - проверка полноты очереди\nEND - вывод элементов очереди и завершение работы\n\n";
  82.     while (true)
  83.     {
  84.         cout << endl;
  85.         cin >> command;
  86.         if (command == "END")
  87.             break;
  88.         else if (command == "PUSH")
  89.         {
  90.             cin >> number;
  91.             Q->push(number);
  92.         }
  93.         else if (command == "POP")
  94.             Q->pop();
  95.         else if (command == "PRINT")
  96.             Q->print();
  97.         else if (command == "EMPTY")
  98.             Q->empty();
  99.         else if (command == "FULL")
  100.             Q->full();
  101.         else
  102.             cout << "Такой команды нет!\n";
  103.     };
  104.      
  105.  
  106.     cout << "В очереди осталось: ";
  107.     Q->end();
  108.     system("pause");
  109.     return 0;
  110.    
  111. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement