Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <string>
- #include <vector>
- using namespace std;
- struct Program {
- string name;
- float version;
- };
- struct dt {
- Program str;
- dt *sled;
- };
- class Queue {
- private:
- Program queue[100];
- int q_size = 100;
- int start;
- int end;
- int elems;
- public:
- Queue() {
- start = end = 0;
- elems = 0;
- };
- ~Queue() {};
- void push(Program a) {
- if (elems == 0) {
- queue[start] = a;
- end++;
- if (end >= q_size) {
- end = 0;
- }
- } else {
- if (start == end) {
- cout << "Too much pushed elems, clear first!";
- return;
- }
- queue[end] = a;
- end++;
- if (end >= q_size) {
- end = 0;
- }
- }
- elems++;
- }
- Program pop() {
- Program val;
- if (start - 1 >= 0) {
- start++;
- if (start >= q_size) {
- start = 0;
- }
- val = queue[start - 1];
- } else {
- val = queue[0];
- start++;
- }
- elems--;
- return val;
- }
- };
- class List {
- public:
- dt *Head = NULL;
- dt *Ending = NULL;
- void add(Program c) {
- dt *temp = new dt;
- temp->str = c;
- temp->sled = NULL;
- if (Head != NULL) {
- Ending->sled = temp;
- Ending = temp;
- } else {
- Head = Ending = temp;
- }
- }
- void show() {
- cout << "Вывод содержимого очереди: " << endl;
- dt *temp = Head;
- while (temp != NULL) {
- cout << temp->str.name << " " << temp->str.version << endl;
- temp = temp->sled;
- }
- }
- void remove() {
- if (Head != NULL) {
- dt *temp = Head;
- Head = Head->sled;
- delete temp;
- }
- }
- void remove_all() {
- if (Head != NULL) {
- dt *temp = Head;
- while (temp != NULL) {
- temp = Head->sled;
- delete Head;
- Head = temp;
- }
- }
- }
- void search(string sh) {
- dt *temp = Head;
- bool found = false;
- while (temp != NULL) {
- if (temp->str.name == sh) {
- cout << "Элемент <<" << temp->str.name << ">> версии " << temp->str.version << " найден в очереди."
- << endl;
- found = true;
- }
- temp = temp->sled;
- }
- if (!found)
- cout << "Элемент <<" << sh << ">> не найден в очереди." << endl;
- }
- void obrabotka() {
- Program r;
- dt *temp1 = Head;
- while (temp1 != NULL) {
- if (temp1->str.version > 10.0) {
- cout << temp1->str.name << " " << temp1->str.version << endl;
- }
- temp1 = temp1->sled;
- }
- cout << "Обработка призведена!" << endl;
- }
- void operator+(Program b) {
- add(b);
- }
- void operator-(int k) {
- for (int i = 0; i < k; i++)
- remove();
- }
- void operator--(int) {
- remove_all();
- }
- };
- int main() {
- setlocale(LC_ALL, "Rus");
- system("color F0");
- string v;
- float c;
- string i;
- List e;
- Queue q;
- e.add(Program{"Steam", 2.23});
- e.add(Program{"Discord", 3.22});
- e.add(Program{"Thunder", 3});
- e.add(Program{"Skype", 228});
- e.add(Program{"Steam", 6.54});
- e.add(Program{"Steam", 2.21});
- menu:
- cout << "1) Вывод содержимого очереди." << endl;
- cout << "2) Добавить элемент в очередь." << endl;
- cout << "3) Удалить элемент из очереди." << endl;
- cout << "4) Поиск элемента." << endl;
- cout << "5) Обработка." << endl;
- cout << "6) Выход из программы." << endl;
- cout << "Выбрать:";
- cin >> i;
- cout << endl;
- if (i == "1") {
- e.show();
- cout << endl;
- goto menu;
- } else if (i == "2") {
- dobav:
- cout << "Введите программу";
- cin >> v;
- cout << "Введите версию";
- cin >> c;
- if (v.length() <= 15) {
- e + Program{v, c};
- cout << endl;
- goto menu;
- } else {
- cout << "Превышена максимальная длина строки!" << endl;
- goto dobav;
- }
- } else if (i == "3") {
- e - 1;
- goto menu;
- } else if (i == "4") {
- dobav2:
- cout << "Введите слово для поиска: ";
- cin >> v;
- if (v.length() <= 10) {
- e.search(v);
- cout << endl;
- goto menu;
- } else {
- cout << "Превышена максимальная длина строки!" << endl;
- goto dobav2;
- }
- } else if (i == "5") {
- e.obrabotka();
- goto menu;
- } else if (i == "6") {
- e--;
- return 0;
- } else {
- cout << "Некорректный ввод" << endl << endl;
- goto menu;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement