Savelyev_Vyacheslav

OOP L1

Jul 24th, 2021 (edited)
1,005
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // ООП_1.cpp : 9Этот файл содержит функцию "main". Здесь начинается и заканчивается выполнение программы.
  2. //
  3.  
  4. #define _CRT_SECURE_NO_WARNINGS
  5. #include <iomanip>
  6. #include <iostream>
  7. #include <string.h>
  8. using namespace std;
  9.  
  10. struct Data
  11. {
  12.     char prodName[30];
  13.     int inventN;
  14. };
  15.  
  16. struct product
  17. {
  18.     Data d;
  19.     product* next;
  20.     product* back;
  21. };
  22.  
  23. class Products
  24. {
  25. private:
  26.     product* head;
  27. public:
  28.  
  29.     Products()
  30.     {
  31.     head = 0;
  32.     }
  33.  
  34.     Products(Data s)
  35.     {
  36.         head = new product;
  37.         head->d = s;
  38.         head->next = 0;
  39.         head->back = 0;
  40.     }
  41.  
  42.     void add(Data s)
  43.     {
  44.         if (!head)
  45.         {
  46.             head = new product;
  47.             head->d = s;
  48.             head->next = 0;
  49.             head->back = 0;
  50.         }
  51.         else
  52.         {
  53.             product* temp = new product;
  54.             temp->d = s;
  55.             temp->next = head;
  56.             temp->back = 0;
  57.             head->back = temp;
  58.             head = temp;
  59.         }
  60.     }
  61.  
  62.     void delete_head()
  63.     {
  64.         if (!head)
  65.         {
  66.             cout << "ПУСТО" << " \n";
  67.         }
  68.         else {
  69.             product* temp = head;
  70.             head = head->next;
  71.             delete temp;
  72.         }
  73.        
  74.     }
  75.    
  76.     float chek_inventN(int prodName)
  77.     {int chek = 0;
  78.         int int1;
  79.         product* temp = head;
  80.         while (temp)
  81.         {      
  82.             if (prodName == temp->d.inventN) {
  83.                 cout << "Продукт на складе.  '"<< "Имя продукта - '"<< temp->d.prodName << "' Номер продукта - '" << temp->d.inventN<< "'\n"; break;
  84.                 chek++;
  85.             }          
  86.             temp = temp->next;
  87.         }
  88.         if (chek != 0) {
  89.             cout << "Продукта нет на складе'" << "'\n";
  90.         }
  91.         if (!temp)
  92.             {
  93.                 return 0;
  94.             }
  95.     }
  96.  
  97.     int print()
  98.     {
  99.         if (!head)
  100.         {
  101.             return 0;
  102.         }
  103.         product* temp = head;
  104.         cout << "___Print___\n";
  105.         while (temp)
  106.         {
  107.             cout << temp->d.prodName;
  108.             cout << " " << temp->d.inventN;
  109.             cout << endl;
  110.             temp = temp->next;
  111.         }
  112.         cout << "/___Print___";
  113.         return 1;
  114.     }
  115.  
  116.     Products(const Products& object)
  117.     {
  118.         cout << "ЗАПУСК КОПИИ СПИСКА";
  119.         if (!object.head)
  120.         {
  121.             head = new product;
  122.             head = 0;
  123.             return;
  124.         }
  125.         head = new product;
  126.         strcpy(head->d.prodName, object.head->d.prodName);
  127.         head->d.inventN = object.head->d.inventN;
  128.         head->next = 0;
  129.         product* temp = object.head->next;
  130.         while (temp)
  131.         {
  132.             product* temp1 = new product;
  133.             strcpy(temp1->d.prodName, temp->d.prodName);
  134.             temp1->d.inventN = temp->d.inventN;
  135.             temp1->next = head;
  136.             head = temp1;
  137.             temp = temp->next;
  138.         }
  139.     }
  140.     ~Products()
  141.     {
  142.         product* temp;
  143.         while (head)
  144.         {
  145.             temp = head;
  146.             head = head->next;
  147.             delete temp;
  148.         }
  149.     }
  150. };
  151.  
  152. int main()
  153. {
  154.     setlocale(LC_ALL, "Russian");
  155.     Products  class_product;
  156.     int i;
  157.     while (1)
  158.     {
  159.         cout << "\nВыберите операцию:" << endl;
  160.         cout << "1 - Работа с копией" << endl;
  161.         cout << "2 - Добавить элемент в список" << endl;
  162.         cout << "3 - Вывести список" << endl;
  163.         cout << "4 - Наличие на складе" << endl;
  164.         cout << "5 - Удалить узел с головы списка" << endl;
  165.         cout << "6 -Выход" << endl;
  166.         cin >> i;
  167.         switch (i)
  168.         {
  169.         case 1:
  170.         {
  171.             Products copy_product(class_product);
  172.             int m;
  173.             while (1)
  174.             {
  175.                 cout << "\nВыберите операцию:" << endl;
  176.                 cout << "1 - Добавить элемент в список-копию" << endl;
  177.                 cout << "2 - Вывести список-копию" << endl;
  178.                 cout << "3 - Наличие на складе в списке-копии" << endl;
  179.                 cout << "4 - Удалить узел с головы списка-копии" << endl;
  180.                 cout << "5 -Выход" << endl;
  181.                 cin >> m;
  182.                 if (m == 5)
  183.                 {
  184.                     break;
  185.                 }
  186.                 switch (m)
  187.                 {
  188.                 case 1:
  189.                 {
  190.                     Data s;
  191.                     cout << "Введите Название продукта" << endl;
  192.                     cin >> s.prodName;
  193.                     cout << "Введите номер продукта" << endl;
  194.                     cin >> s.inventN;
  195.                     copy_product.add(s);
  196.                     break;
  197.                 }
  198.                 case 2:
  199.                 {
  200.                     if (!copy_product.print()) cout << "В списке нет ни одного товара-продукта!" << endl;
  201.                     break;
  202.                 }
  203.                 case 3:
  204.                 {
  205.                     int prodName;
  206.                     cout << "Введите номер продукта" << endl;
  207.                     cin >> prodName;
  208.                     if (!copy_product.chek_inventN(prodName))
  209.                     {
  210.                         cout << "Такого товара-продукта нет в списке!" << endl;
  211.                     }
  212.                     break;
  213.                 }
  214.                 case 4:
  215.                 {
  216.                     copy_product.delete_head();
  217.                     break;
  218.                 }
  219.                 }
  220.             }
  221.             break;
  222.         }
  223.         case 2:
  224.         {
  225.             Data s;
  226.             cout << "Введите Название продукта" << endl;
  227.             cin >> s.prodName;
  228.             cout << "Введите номер продукта" << endl;
  229.             cin >> s.inventN;
  230.             class_product.add(s);
  231.             break;
  232.         }
  233.         case 3:
  234.         {
  235.             if (!class_product.print()) cout << "В списке нет ни одного товара-продукта!" << endl;
  236.             break;
  237.         }
  238.         case 4:
  239.         {
  240.             int prodName;
  241.             cout << "Введите номер продукта" << endl;
  242.             cin >> prodName;
  243.             if (!class_product.chek_inventN(prodName))
  244.             {
  245.                 cout << "Такого товара-продукта нет в списке!" << endl;
  246.             }
  247.             break;
  248.         }
  249.         case 5:
  250.         {
  251.             class_product.delete_head();
  252.             break;
  253.         }
  254.         case 6: return 0;
  255.         }
  256.     }
  257.  
  258. }
  259.  
RAW Paste Data