Advertisement
Guest User

lalala

a guest
Mar 31st, 2020
105
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 5.87 KB | None | 0 0
  1. //Склад. Наименование товара, цена, количество, процент торговой надбавки (5, 7, 11, 20, 25, 30). Выбор по цене. Процент торговой надбавки реализовать с помощью перечисления.
  2. #include <stdio.h>
  3. #include <iostream>
  4. #include <fstream>
  5. using namespace std;
  6. enum Procent
  7. {
  8.     pr1 = 5, pr2 = 7, pr3 = 11, pr4 = 20, pr5 = 25, pr6 = 30
  9. } proc;
  10.  
  11. struct List
  12. {
  13.     char nameofTovar[50];
  14.     int price;
  15.     int countofTovar;
  16. };
  17. void addElement(int& count);
  18. void show(const int count);
  19. void deleteElement(int& count);
  20. void searchToPrice(const int count);
  21. List* Rice;
  22. List* tempRice;
  23. FILE* f;
  24. int main()
  25. {
  26.     setlocale(LC_ALL, "ru");
  27.     int count = 0;
  28.     int n;
  29.     do
  30.     {
  31.         printf("Меню\nВвыберите пункт\n");
  32.         printf("1-Добавить элемент\n");
  33.         printf("2-показать все элементы\n");
  34.         printf("3-поиск по цене\n");
  35.         printf("4-удалить товар\n");
  36.         std::cin >> n;
  37.         switch (n)
  38.         {
  39.         case 1:
  40.             addElement(count); break;
  41.         case 2:
  42.             show(count); break;
  43.         case 3:
  44.             searchToPrice(count); break;
  45.         case 4:
  46.             deleteElement(count); break;
  47.         }
  48.     } while (n != 0);
  49.  
  50. }
  51. void addElement(int& count)
  52. {
  53.     int p;
  54.     if (count == 0)
  55.     {
  56.         Rice = new List[1];
  57.         printf("Введите наименование товара\n");
  58.         std::cin >> Rice[0].nameofTovar;
  59.         printf("Введите количество товара\n");
  60.         std::cin >> Rice[0].countofTovar;
  61.         printf("Введите цену\n");
  62.         std::cin >> Rice[0].price;
  63.         printf("Введите процент торговой надбавки (5, 7, 11, 20, 25, 30) \n");
  64.         std::cin >> p;
  65.         switch (p)
  66.         {
  67.         case 5:
  68.             proc = pr1;
  69.             break;
  70.         case 7:
  71.             proc = pr2;
  72.             break;
  73.         case 11:
  74.             proc = pr3;
  75.             break;
  76.         case 20:
  77.             proc = pr4;
  78.             break;
  79.         case 25:
  80.             proc = pr5;
  81.             break;
  82.         case 30:
  83.             proc = pr6;
  84.                 break;
  85.         }
  86.     }
  87.     /*Есть счетчик элементов - count, мы передаем его в функцию
  88. если он равен 0,то мы выделяем память под 1 объект и заполняем его.Затем увеличиваем счетчик на 1
  89. Если элементы уже есть,то мы создаем временный массив, перекидываем туда уже имеющиеся рейсы,
  90. старый массив очищаем и создаем размером на 1 больше,чем был.Затем из временного перекидываем в новый и последний элемент заполняем*/
  91.     else
  92.     {
  93.         tempRice = new List[count];
  94.         for (int i = 0; i < count; i++)
  95.         {
  96.             tempRice[i] = Rice[i];
  97.         }
  98.         delete[]Rice;
  99.         Rice = new List[count + 1];
  100.         for (int i = 0; i < count; i++)
  101.         {
  102.             Rice[i] = tempRice[i];
  103.         }
  104.         delete[]tempRice;
  105.         printf("Введите наименование товара\n");
  106.         std::cin >> Rice[count].nameofTovar;
  107.         printf("Введите количество товара\n");
  108.         std::cin >> Rice[count].countofTovar;
  109.         printf("Введите цену\n");
  110.         std::cin >> Rice[count].price;
  111.         printf("Введите процент торговой надбавки (5, 7, 11, 20, 25, 30) \n");
  112.         std::cin >> p;
  113.         switch (p)
  114.         {
  115.         case 5:
  116.             proc = pr1;
  117.             break;
  118.         case 7:
  119.             proc = pr2;
  120.             break;
  121.         case 11:
  122.             proc = pr3;
  123.             break;
  124.         case 20:
  125.             proc = pr4;
  126.             break;
  127.         case 25:
  128.             proc = pr5;
  129.             break;
  130.         case 30:
  131.             proc = pr6;
  132.             break;
  133.         }
  134.     }
  135.     count++;
  136. }
  137. void show(const int count)
  138. {
  139.     int n;
  140.     std::cout << "Номер товара:\n" << std::endl;
  141.     std::cin >> n;
  142.     if (count != 0)
  143.     {
  144.     std::cout << "Наименование товара:\n" << Rice[n-1].nameofTovar << std::endl;
  145.     std::cout << "Пункт количество товара:\n" << Rice[n-1].countofTovar << std::endl;
  146.     std::cout << "Цена:\n" << Rice[n-1].price << std::endl;
  147.     std::cout << "Процент торговой надбавки:\n" << proc << std::endl;
  148.     }
  149.     else
  150.     {
  151.         std::cout << "\nЭлементов еще нет\n";
  152.     }
  153. }
  154. void searchToPrice(const int count)
  155. {
  156.     int temp;
  157.     std::cout << "Введите цену\n";
  158.     std::cin >> temp;
  159.     for (int i = 0; i < count; i++)
  160.         if (temp == Rice[i].price)
  161.         {
  162.             std::cout << "Номер наименование товара:\n" << Rice[i].nameofTovar << std::endl;
  163.             std::cout << "Пункт количество товара:\n" << Rice[i].countofTovar << std::endl;
  164.             std::cout << "Цена:\n" << Rice[i].price << std::endl;
  165.             std::cout << "Процент торговой надбавки:\n" << proc << std::endl;
  166.         }
  167. }
  168. void deleteElement(int& count)
  169. {
  170.     string name;
  171.     int flag = 0;
  172.     std::cout << "Введите наименование товара\n";
  173.     std::cin >> name;
  174.     for (int i = 0; i < count; i++)
  175.         if (Rice[i].nameofTovar == name)
  176.             flag = 1;
  177.     if (flag == 1)
  178.     {
  179.         count--;
  180.         /*Первый цикл для того,чтобы определить,есть ли у нас элемент с таким номером.Если есть - флаг меняем на тру(1)
  181. Если тру,то уменьшаем размер массива на 1,и если встретим нужный нам элемент,делаем доп итерацию (i++),чтобы пропустить его и записать уже следующий в новый массив*/
  182.         List* tempMas = new List[count];
  183.         for (int i = 0, j = 0; j < count; i++, j++)
  184.         {
  185.             if (Rice[i].nameofTovar == name)
  186.             {
  187.                 i++;
  188.             }
  189.             tempMas[j] = Rice[i];
  190.         }
  191.         delete[]Rice;
  192.         Rice = new List[count];
  193.         for (int i = 0; i < count; i++)
  194.             Rice[i] = tempMas[i];
  195.         delete[]tempMas;
  196.         std::cout << "Товар успешно удален\n";
  197.     }
  198.     else std::cout << "Такого товара не существует\n";
  199. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement