Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- using namespace std;
- const int N = 4; //размер очереди
- struct Queue
- {
- int data[N]; //массив данных
- int last; //указатель на начало
- };
- int k = 0;
- void Creation(Queue *Q) //Создание очереди Q
- {
- Q->last = 0;
- }
- bool Full(Queue *Q) //Проверка очереди на пустоту
- {
- if (Q->last == 0) return true;
- else return false;
- }
- void Add(Queue *Q) //Добавление элемента
- {
- if (Q->last == N)
- {
- cout << "\nОчередь заполнена\n\n"; return;
- }
- int value;
- cout << "\nЗначение > ";
- cin >> value;
- Q->data[Q->last++] = value;
- k++;
- cout << endl << "Элемент добавлен в очередь\n\n";
- }
- void Delete(Queue *Q) //Удаление элемента
- {
- for (int i = 0; i<Q->last && i < N; i++) //смещение элементов
- Q->data[i] = Q->data[i + 1];
- Q->last--;
- }
- void Delete_el_otr(Queue *Q) //Удаление первого отрицательного элемента
- {
- int p = 0;
- for (int i = 0; i < Q->last && i < N; i++)
- {
- if (Q->data[i] < 0)
- {
- for (int u = i; u < Q->last && u < N; u++)
- Q->data[u] = Q->data[u + 1];
- Q->last--;
- break;
- }
- }
- for (int i = 0; i < Q->last && i < N; i++)
- {
- if (Q->data[i] > 0) p++;
- if (p == k) cout << "Отрицательного элемента нет " << endl;
- }
- }
- int Top(Queue *Q) //Вывод начального элемента
- {
- return Q->data[0];
- }
- void Out(Queue *Q) //Вывод очереди
- {
- for (int i = 0; i < Q->last && i < N; i++)
- {
- cout << Q->data[i] << " ";
- }
- return;
- }
- int Size(Queue *Q) //Размер очереди
- {
- return Q->last;
- }
- void main()
- {
- setlocale(LC_ALL, "Rus");
- Queue Q;
- Creation(&Q);
- char number;
- do
- {
- cout << "1. Добавить элемент" << endl;
- cout << "2. Удалить элемент" << endl;
- cout << "3. Вывести верхний элемент" << endl;
- cout << "4. Узнать размер очереди" << endl;
- cout << "5. Удалить первый отрицательный элемент (если он есть)" << endl;
- cout << "6. Вывод всей очереди" << endl;
- cout << "0. Выйти\n\n";
- cout << "Номер команды > "; cin >> number;
- switch (number)
- {
- case '1': Add(&Q); break;
- case '2': if (Full(&Q)) cout << endl << "Очередь пуста\n\n";
- else
- {
- Delete(&Q);
- cout << endl << "Элемент удален из очереди\n\n";
- } break;
- case '3': if (Full(&Q)) cout << endl << "Очередь пуста\n\n";
- else cout << "\nНачальный элемент: " << Top(&Q) << "\n\n";
- break;
- case '4': if (Full(&Q)) cout << endl << "Очередь пуста\n\n";
- else cout << "\nРазмер очереди: " << Size(&Q) << "\n\n";
- break;
- case '5': if (Full(&Q)) cout << endl << "Очередь пуста\n\n";
- else
- {
- Delete_el_otr(&Q);
- } break;
- case '6': if (Full(&Q)) cout << endl << "Очередь пуста\n\n";
- else cout << "\nОчередь: "; Out(&Q); cout << "\n\n";
- break;
- case '0': break;
- default: cout << endl << "Команда не определена\n\n";
- break;
- }
- } while (number != '0');
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement