Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <string>
- #include <windows.h>
- #include <locale>
- #include <iomanip>
- using namespace std;
- struct los
- {
- int employee;
- int number;
- int timefortask;
- string info;
- clock_t time;
- los* next = NULL;
- };
- struct ocher {
- los* first = NULL;
- los* last = NULL;
- };
- struct ActionLos
- {
- clock_t start = clock();
- int BigTime;
- int SizeList = 0;
- ocher* q = new ocher;
- string command;
- float number;
- int size = 0;
- void menu() {
- cout << "Введите команды управления очередью:\nPUSH - добавление элементa\nPOP - удаление элемента из очереди и его вывод\nPRINT - вывод первого в очереди\nEMPTY - проверка пустоты очереди\nFULL - проверка полноты очереди\nEND - вывод элементов очереди и завершение работы\n\n";
- while (true)
- {
- cout << endl;
- cin >> command;
- if (command == "END")
- break;
- else if (command == "PUSH")
- {
- if (size < 7) {
- size++;
- Push();
- }
- else
- cout << "Очередь переполнена! Добавление невозможно\n";
- }
- else if (command == "POP")
- {
- if (size > 0) {
- size--;
- cout << Pop(qHead, qLast) << endl;
- }
- else
- cout << "Очередь пуста! Удаление невозможно\n";
- }
- else if (command == "PRINT")
- {
- if (size > 0)
- cout << Print(qHead) << endl;
- else
- cout << "Очередь пуста! Вывод невозможен\n";
- }
- else if (command == "FULL")
- Full(size);
- else if (command == "EMPTY")
- Empty(size);
- else
- cout << "Такой команды нет!\n";
- }
- }
- void conclusion() {
- if (SizeList > 0) {
- los* temprory = q->last;
- cout << setw(15) << "приоритетность " << setw(18) << " номер сотрудника " << " информация о задании" << endl;
- while (temprory != NULL) {
- cout << setw(14) << temprory->employee;
- cout << setw(18) << temprory->number;
- cout << " " << temprory->info << endl;
- temprory = temprory->next;
- }
- }
- else {
- cout << "Очередь пуста" << endl;
- }
- }
- void addElement() {
- string s;
- cout << "Введите категорию сотрудника (М, К или Р)" << endl;
- los* el = new los;
- char category;
- cin >> category;
- switch (category) {
- case 'M':
- el->employee = 1;
- break;
- case 'P':
- el->employee = 3;
- break;
- case 'K':
- el->employee = 2;
- break;
- }
- cout << "Введите время выполнения задачи в секундах" << endl;
- cin >> el->timefortask;
- cout << "Введите информацию о задаче" << endl;
- cin >> el->info;
- cout << "Введите личный номер сотрудника" << endl;
- cin >> el->number;
- el->time = clock();
- if (q->first == NULL) {
- q->first = el;
- q->last = el;
- el->next = NULL;
- }
- else {
- los* temprory = q->last;
- while (temprory != NULL) {
- if (temprory->employee > el->employee
- && temprory->next != NULL &&
- temprory->next->employee <= el->employee) {
- el->next = temprory->next;
- temprory->next = el;
- break;
- }
- else if (temprory->employee > el->employee&& temprory->next == NULL) {
- q->first = el;
- temprory->next = el;
- el->next = NULL;
- break;
- }
- else if (temprory->employee <= el->employee) {
- q->last = el;
- el->next = temprory;
- break;
- }
- else if (temprory->employee < el->employee && temprory->next == NULL) {
- temprory->next = el;
- q->first = el;
- break;
- }
- temprory = temprory->next;
- }
- }
- SizeList++;
- cout << "Добавлено" << endl;
- }
- void deleteElement() {
- if (SizeList == 1) {
- los* el = q->last;
- BigTime = el->timefortask;
- q->last = NULL;
- q->first = NULL;
- cout << "Заявка принята!" << endl;
- cout << "Заявка находилась в очереди на рассмотрении " << (clock() - el->time) / 1000 << " секунд" << endl;
- cout << "Информация о задании: " << el->info << endl;
- cout << "Данное задание будет выполняться " << el->timefortask << " секунд" << endl;
- delete el;
- }
- else {
- los* el = q->first;
- BigTime = el->timefortask;
- los* current = q->last;
- for (int i = 0; i < SizeList; i++) {
- if (current->next == el) {
- q->first = current;
- current->next = NULL;
- cout << "Заявка принята!" << endl;
- cout << "Заявка находилась в очереди на рассмотрении " << (clock() - el->time) / 1000 << " секунд" << endl;
- cout << "Информация о задании: " << el->info << endl;
- cout << "Данное задание будет выполняться " << el->timefortask << " секунд" << endl;
- delete el;
- break;
- }
- current = current->next;
- }
- }
- start = clock();
- //cout << start << endl<<BigTime<<endl;
- SizeList--;
- }
- void getValue() {
- if (q->first != NULL) {
- cout << "Приоритетность: " << q->first->employee << endl;
- cout << "Номер сотрудника: " << q->first->number << endl;
- cout << "Информация о задании: " << q->first->info << endl;
- cout << "Время выполнения задания: " << q->first->timefortask << endl;
- }
- else {
- cout << "Очередь пуста" << endl;
- }
- }
- void isEmpty() {
- if (q->first == NULL) {
- cout << "Очередь пуста" << endl;
- }
- else cout << "Очередь не пуста" << endl;
- }
- void isFull() {
- if (SizeList == 10) {
- cout << "Очередь полна" << endl;
- }
- else {
- cout << "Очередь не полна" << endl;
- }
- }
- };
- int main()
- {
- SetConsoleCP(1251);
- SetConsoleOutputCP(1251);
- setlocale(LC_ALL, "");
- ActionLos* work = new ActionLos;
- work->menu();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment