Advertisement
kat_power

1-19

Sep 22nd, 2019
109
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.55 KB | None | 0 0
  1. #include "pch.h"
  2. #include <iostream>
  3. //#include <deque>
  4.  
  5. using namespace std;
  6.  
  7. void print_queue(int queue[], int count) {
  8.     if (count == 0)
  9.         cout << "Очередь пуста";
  10.  
  11.     for (int i = 0; i < count; i++)
  12.         cout << queue[i] << " ";
  13.     cout << endl;
  14. }
  15.  
  16. void push_front(int queue[], int &count, int elem) {
  17.     if (count == 10)
  18.     {
  19.         cout << "Очередь полна";
  20.         return;
  21.     }
  22.  
  23.     for (int i = count; i > 0; --i)
  24.         queue[i] = queue[i - 1];
  25.     queue[0] = elem;
  26.     ++count;
  27. }
  28.  
  29. void push_back(int queue[], int &count, int elem) {
  30.     if (count == 10)
  31.     {
  32.         cout << "Очередь полна";
  33.         return;
  34.     }
  35.     queue[count++] = elem;
  36. }
  37.  
  38. int pop_start(int queue[], int &count) {
  39.     int elem = queue[0];
  40.     for (int i = 0; i < *queue; i++) queue[i] = queue[i + 1];
  41.     (count)--;
  42.     return elem;
  43. }
  44.  
  45. int pop_end(int queue[], int &count) {
  46.     int elem = queue[count];
  47.     (count)--;
  48.     return queue[count];
  49. }
  50.  
  51. int main()
  52. {
  53.     setlocale(LC_ALL, "rus");
  54.     int queue[10];
  55.     int elem = 0;
  56.     int count = 0;
  57.     int key = 0;
  58.  
  59.     while (key != 5)
  60.     {
  61.         cout << "Содержимое: ";
  62.         print_queue(queue, count);
  63.         cout << "1. Добавить элемент в конец очереди" << endl;
  64.         cout << "2. Извлечь элемент из начала очереди" << endl;
  65.         cout << "3. Добавить элемент в начало очереди" << endl;
  66.         cout << "4. Извлечь элемент из конца очереди + эл. из начала очереди"<< endl;
  67.         cout << "5. Выход" << endl;
  68.         cout << "Номер команды > ";
  69.         //cin >> key;
  70.         //while (scanf_s("%i", &key)!=1)
  71.         while(!(cin>>key))
  72.         {
  73.             rewind(stdin);
  74.             cin.clear();//убирает зацикливание
  75.             cout << "Выберите операцию заново!" << endl;
  76.         }
  77.  
  78.             if (key == 1)
  79.             {
  80.                 cout << "Введите значение эл. для конца очереди: ";
  81.                 cin >> elem;
  82.                 push_back(queue, count, elem);
  83.             }
  84.             else if (key == 3)
  85.             {
  86.                 cout << "Введите значение эл. для начала очереди: ";
  87.                 cin >> elem;
  88.                 push_front(queue, count, elem);
  89.             }
  90.             else if (key == 2)
  91.             {
  92.                 if (count == 0)
  93.                     cout << "Очередь пуста";
  94.                 else printf("Извлечённый элелемнт из начала = %i\n", pop_start(queue, count));
  95.             }
  96.  
  97.             else if (key == 4)
  98.             {
  99.                 printf("Извлечённый элемент из конца очереди +начальный элемент = %i\n", pop_end(queue, count) + queue[0]);
  100.             }  
  101.     }
  102.     return 0;
  103. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement