Advertisement
Pohuyumer

𝔹𝕆$$ 𝕆𝔽 𝕋ℍ𝔼 𝔾𝕐𝕄 Cases

Jun 8th, 2020
200
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 5.14 KB | None | 0 0
  1. #pragma once
  2. FILE* flog = fopen("log.txt", "at");
  3.  
  4. char* ANSIUpperCase(char* s, char* S) { //русификация
  5.     S = strcpy(S, s);
  6.     char* ch = S;
  7.     while (*ch) {
  8.         if (*ch >= 'a' && *ch <= 'z' || *ch >= 'а' && *ch <= 'я') *ch = *ch - 32;
  9.         if (*ch == 'ё') *ch = 'Ё';
  10.         ch++;
  11.     }
  12.     return S;
  13. }
  14.  
  15. void Correction(TInfo& info) {  //коррекция размера
  16.     if (info.size < 10) {
  17.         info.size = 10;
  18.         printf("Размер < 10; Была сделана корректировка\n");
  19.     }
  20.     if (info.size > 45) {
  21.         info.size = 45;
  22.         printf("Размер > 45; Была сделана корректировка\n");
  23.     }
  24.  
  25. }
  26.  
  27. void FreeQueue(TQueue& queue)
  28. {
  29.     while (!IsEmpty(queue))
  30.     {
  31.         TakeFromHead(queue);
  32.     }
  33.     fprintf(flog, "Очередь очищена\n\n");
  34.     printf("Очередь очищена\n");
  35. }
  36. void Add(TQueue& queue)
  37. {
  38.     TInfo info;
  39.     char s[31];
  40.  
  41.     std::cin.ignore(sizeof(s), '\n');
  42.     printf("\nВведите название: ");
  43.     std::cin.getline(s, sizeof(s));
  44.     strcpy(info.name, s);
  45.  
  46.     int a;
  47.     bool flag = false;
  48.     printf("Выберите тип:\n1 - Мужские; 2 - Женские; 3 - Детские\n");
  49.     scanf("%d", &a);
  50.     while (!flag)
  51.     {
  52.         switch (a)
  53.         {
  54.         case 1:
  55.             strcpy(info.gender, "Мужские");
  56.             flag = true;
  57.             break;
  58.         case 2:
  59.             strcpy(info.gender, "Женские");
  60.             flag = true;
  61.             break;
  62.         case 3:
  63.             strcpy(info.gender, "Детские");
  64.             flag = true;
  65.             break;
  66.         default:
  67.             printf("Неверный тип\n");
  68.             Add(queue);
  69.             flag = true;
  70.             break;
  71.         }
  72.     }
  73.     flag = false;
  74.     printf("Выберите сезон:\n1 - Зима; 2 - Весна; 3 - Лето; 4 - Осень\n");
  75.     scanf("%d", &a);
  76.     while (!flag)
  77.     {
  78.         switch (a)
  79.         {
  80.         case 1:
  81.             strcpy(info.season, "Зима");
  82.             flag = true;
  83.             break;
  84.         case 2:
  85.             strcpy(info.season, "Весна");
  86.             flag = true;
  87.             break;
  88.         case 3:
  89.             strcpy(info.season, "Лето");
  90.             flag = true;
  91.             break;
  92.         case 4:
  93.             strcpy(info.season, "Осень");
  94.             flag = true;
  95.             break;
  96.         default:
  97.             printf("Неверный сезон\n");
  98.             Add(queue);
  99.             flag = true;
  100.             break;
  101.         }
  102.     }
  103.     flag = false;
  104.  
  105.     std::cin.ignore(sizeof(s), '\n');
  106.     printf("Введите цвет: ");
  107.     std::cin.getline(s, sizeof(s));
  108.     strcpy(info.color, s);
  109.  
  110.     printf("Введите размер: ");
  111.     scanf("%s", &s);
  112.     info.size = atof(s);
  113.     Correction(info);         //корректировка размера
  114.  
  115.     printf("Введите цену: ");
  116.     scanf("%s", &s);
  117.     info.price = atof(s);
  118.  
  119.     AddToTail(queue, info);
  120.     Print(queue, flog);
  121. }
  122. void DeleteN(int N, TQueue& queue)
  123. {
  124.     int i = 0;
  125.     while ((!IsEmpty(queue)) && (i < N))
  126.     {
  127.         TakeFromHead(queue);
  128.         i++;
  129.     }
  130.  
  131.     fprintf(flog, "%d элементов удалено\n", N);
  132.     printf("%d элементов удалено\n", N);
  133.     Print(queue, flog);
  134. }
  135. void Solution(TQueue& queue)
  136. {
  137.  
  138.     char tmp[16] = "";
  139.     int k = 0;
  140.     TInfo a;
  141.     TQueue buffer;
  142.     InitializeQueue(buffer);
  143.  
  144.     while (!IsEmpty(queue))
  145.     {
  146.         a = TakeFromHead(queue);
  147.         if ((strcmp(a.gender, "Детские") == 0) && (strcmp(a.season, "Лето") == 0))
  148.         {
  149.             k++;
  150.             printf("%s %s %s %s %5d %8d\n", a.name, a.gender, a.season, a.color, a.size, a.price);
  151.             fprintf(flog, "%31s%31s%31s%31s%5d%8d\n", a.name, a.gender, a.season, a.color, a.size, a.price);
  152.             AddToTail(buffer, a);
  153.         }
  154.  
  155.     }
  156.  
  157.     while (!IsEmpty(buffer))
  158.     {
  159.         AddToTail(queue, *&TakeFromHead(buffer));
  160.     }
  161.  
  162.     fprintf(flog, "Оставшиеся элементы\n");
  163.     Print(queue, flog);
  164. }
  165. void Input(const char* name, TQueue& queue)
  166. {
  167.     FILE* f = fopen(name, "rt");                        // открытие текстового файла для чтения
  168.    
  169.     while (!feof(f)) {
  170.         TInfo info = { "", "", "", "", 0, 0 };
  171.         char s[31] = "";
  172.  
  173.         fscanf(f, "%s", info.name);
  174.         if (strcmp(info.name, "**") == 0)
  175.             break;
  176.        
  177.         fscanf(f, "%s", info.gender);
  178.         fscanf(f, "%s", info.season);
  179.         fscanf(f, "%s", info.color);
  180.  
  181.         fscanf(f, "%s", &s);        // ввод размера продукта
  182.         info.size = atoi(s);
  183.         Correction(info);
  184.  
  185.         fscanf(f, "%s", &s);        // ввод цены товара
  186.         info.price = atoi(s);       // atoi(s) - конвертирует строку s в величину типа int      
  187.  
  188.        
  189.         AddToTail(queue, info);
  190.     }
  191.  
  192.     fprintf(flog, "Элементы считаны\n");
  193.     printf("Элементы считаны\n");
  194.     Print(queue, flog);
  195. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement