Advertisement
Guest User

9

a guest
May 31st, 2016
60
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.41 KB | None | 0 0
  1. #include <iostream>
  2. using namespace std;
  3. const int N = 4; //размер очереди
  4. struct Queue
  5. {
  6. int data[N]; //массив данных
  7. int last; //указатель на начало
  8. };
  9. int k = 0;
  10. void Creation(Queue *Q) //Создание очереди Q
  11. {
  12. Q->last = 0;
  13. }
  14. bool Full(Queue *Q) //Проверка очереди на пустоту
  15. {
  16. if (Q->last == 0) return true;
  17. else return false;
  18. }
  19. void Add(Queue *Q) //Добавление элемента
  20. {
  21. if (Q->last == N)
  22. {
  23. cout << "\nОчередь заполнена\n\n"; return;
  24. }
  25. int value;
  26. cout << "\nЗначение > ";
  27. cin >> value;
  28. Q->data[Q->last++] = value;
  29. k++;
  30. cout << endl << "Элемент добавлен в очередь\n\n";
  31. }
  32. void Delete(Queue *Q) //Удаление элемента
  33. {
  34. for (int i = 0; i<Q->last && i < N; i++) //смещение элементов
  35. Q->data[i] = Q->data[i + 1];
  36. Q->last--;
  37. }
  38. void Delete_el_otr(Queue *Q) //Удаление первого отрицательного элемента
  39. {
  40. int p = 0;
  41. for (int i = 0; i < Q->last && i < N; i++)
  42. {
  43. if (Q->data[i] < 0)
  44. {
  45. for (int u = i; u < Q->last && u < N; u++)
  46. Q->data[u] = Q->data[u + 1];
  47. Q->last--;
  48. break;
  49. }
  50. }
  51. for (int i = 0; i < Q->last && i < N; i++)
  52. {
  53. if (Q->data[i] > 0) p++;
  54. if (p == k) cout << "Отрицательного элемента нет " << endl;
  55. }
  56. }
  57. int Top(Queue *Q) //Вывод начального элемента
  58. {
  59. return Q->data[0];
  60. }
  61. void Out(Queue *Q) //Вывод очереди
  62. {
  63. for (int i = 0; i < Q->last && i < N; i++)
  64. {
  65. cout << Q->data[i] << " ";
  66. }
  67. return;
  68. }
  69. int Size(Queue *Q) //Размер очереди
  70. {
  71. return Q->last;
  72. }
  73.  
  74. void main()
  75. {
  76. setlocale(LC_ALL, "Rus");
  77. Queue Q;
  78. Creation(&Q);
  79. char number;
  80. do
  81. {
  82. cout << "1. Добавить элемент" << endl;
  83. cout << "2. Удалить элемент" << endl;
  84. cout << "3. Вывести верхний элемент" << endl;
  85. cout << "4. Узнать размер очереди" << endl;
  86. cout << "5. Удалить первый отрицательный элемент (если он есть)" << endl;
  87. cout << "6. Вывод всей очереди" << endl;
  88. cout << "0. Выйти\n\n";
  89. cout << "Номер команды > "; cin >> number;
  90. switch (number)
  91. {
  92. case '1': Add(&Q); break;
  93. case '2': if (Full(&Q)) cout << endl << "Очередь пуста\n\n";
  94. else
  95. {
  96. Delete(&Q);
  97. cout << endl << "Элемент удален из очереди\n\n";
  98. } break;
  99. case '3': if (Full(&Q)) cout << endl << "Очередь пуста\n\n";
  100. else cout << "\nНачальный элемент: " << Top(&Q) << "\n\n";
  101. break;
  102. case '4': if (Full(&Q)) cout << endl << "Очередь пуста\n\n";
  103. else cout << "\nРазмер очереди: " << Size(&Q) << "\n\n";
  104. break;
  105. case '5': if (Full(&Q)) cout << endl << "Очередь пуста\n\n";
  106. else
  107. {
  108. Delete_el_otr(&Q);
  109. } break;
  110. case '6': if (Full(&Q)) cout << endl << "Очередь пуста\n\n";
  111. else cout << "\nОчередь: "; Out(&Q); cout << "\n\n";
  112. break;
  113. case '0': break;
  114. default: cout << endl << "Команда не определена\n\n";
  115. break;
  116. }
  117. } while (number != '0');
  118. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement