Advertisement
Guest User

topkodintheworld

a guest
Dec 24th, 2018
163
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 5.01 KB | None | 0 0
  1. #define _CRT_SECURE_NO_WARNINGS
  2. #include <stdio.h>
  3. #define cnMAX 10000 // Размер массива чисел
  4. #define cnMAX_SIMVOL 40 //Размер массива символов
  5. #define cnVANN_EC 1 // Количество ванн в комнате с сервисом "ECONOM".
  6. #define cnVANN_ST 3 // Количество ванн в комнате с сервисом "STANDART".
  7. #define cnVANN_CO 5 // Количество ванн в комнате с сервисом "COMFORT".
  8. #define cnden 31
  9. #define cnvmeciac 12
  10.  
  11. int main()
  12. {
  13.     FILE *R = fopen("rooms.txt", "r"); // Открытие для чтения файла, в котором записана информация о комнатах.
  14.     struct rooms // Создание структуры, в которой будут храниться данные о комнате.
  15.     {
  16.         int ID;
  17.         int BANUM;
  18.         char SERVICE[cnMAX_SIMVOL];
  19.         int CAPACITY;
  20.         int COST;
  21.         int calendar[cnden][cnvmeciac];
  22.        
  23.     };
  24.     int kolvo_komnat;
  25.     fscanf(R, "%d", &kolvo_komnat); // Считывание с файла rooms.txt количество комнат.
  26.     char service_ec[cnMAX_SIMVOL] = "ECONOMY";
  27.     char service_st[cnMAX_SIMVOL] = "STANDARD";
  28.     char service_co[cnMAX_SIMVOL] = "COMFORT";
  29.     rooms mas[cnMAX]; // Создание массива структур.
  30.     for (int i = 0; i <= cnMAX; i++)
  31.     {
  32.         for (int j = 0; j <= cnden; j++)
  33.         {
  34.             for (int l = 0; l <= cnvmeciac; l++)
  35.                 mas[i].calendar[l][j] = 0;
  36.         }
  37.     }
  38.     int opred_vann = 0;
  39.     for (int i = 0; i < kolvo_komnat; i++) // Проход по циклу, считывание информации о комнатах и определение количества ванн в каждой из них.
  40.     {
  41.         fscanf(R, "%d %s %d %d", &mas[i].ID, &mas[i].SERVICE, &mas[i].CAPACITY, &mas[i].COST);
  42.         if (mas[i].SERVICE[0] == service_ec[0])
  43.         {
  44.             opred_vann = cnVANN_EC;
  45.             mas[i].BANUM = opred_vann;
  46.         }
  47.         else
  48.             if (mas[i].SERVICE[0] == service_st[0])
  49.             {
  50.                 opred_vann = cnVANN_ST;
  51.                 mas[i].BANUM = opred_vann;
  52.             }
  53.             else
  54.                 if (mas[i].SERVICE[0] == service_co[0])
  55.                 {
  56.                     opred_vann = cnVANN_CO;
  57.                     mas[i].BANUM = opred_vann;
  58.                 }
  59.     }
  60.     FILE *I = fopen("input01.txt", "r"); // Открытие файл input.txt для чтения информации.
  61.     int nomer_komnat = 0;
  62.     FILE *O = fopen("output01.txt", "w"); // Открытие файл output.txt для вывода информации.
  63.     int kolvo_zaprosov = 0;
  64.     fscanf(I, "%d", &kolvo_zaprosov);
  65.     for (int n = 0; n < kolvo_zaprosov; n++) // Проход по циклу и определение существования комнаты из запроса, если существует, то вывод информации о ней.
  66.     {
  67.         bool log = false;
  68.         fscanf(I, "%*s%*s%*s%*s%d", &nomer_komnat); // Считывание номера комнаты с файла rooms.txt.
  69.         for (int i = 0; i< kolvo_zaprosov; i++)
  70.         {
  71.             if (mas[i].ID == nomer_komnat) // Сравнивание номеров комнат.
  72.             {
  73.                 log = true;
  74.                 fprintf(O, "ROOM %d : CAPACITY %d, %d BATHROOMS, %d ROUBLES. \n", nomer_komnat, mas[i].CAPACITY, mas[i].BANUM, mas[i].COST);
  75.                 break;
  76.             }
  77.         }
  78.         if (log == false)
  79.             fprintf(O, "THERE IS NO ROOM WITH ID = %d.\n", nomer_komnat);
  80.     }
  81.     FILE*Z = fopen("input02.txt", "r");
  82.     FILE*Q = fopen("otput02.txt", "w");
  83.     int p;
  84.     int day1, month1, day2, month2;
  85.     char u;
  86.     char y[4] = "ADD";
  87.     char t[4] = "GET";
  88.     char serv[40];
  89.     fscanf(Z, "%d", &p);
  90.     for (int v = 0; v <= p; p++)
  91.     {
  92.         fscanf(Z, "%c", &u);
  93.         if (u == y[0])
  94.         {
  95.             fscanf(Z, "%*s SERVICE = %s BEGIN_DATE = %d.%d.2020 END DATE = %d.%d.2020", &serv, &day1, &month1, &day2, &month2);
  96.             for (int i = 0; i < kolvo_komnat; i++)
  97.             {
  98.                 bool f = 1;
  99.                 for (int j = month1; j <= month2; j++)
  100.                 {
  101.                     for (int l = day1; l <= day2; l++)
  102.                     {
  103.                         if ((mas[i].calendar[l][j] == 0) && (serv[0] == mas[i].SERVICE[0]))
  104.                         {
  105.                             f = 0;
  106.                             mas[i].calendar[l][j] = 1;
  107.                             fprintf(Q, "THE ROOM %d IS BOOKED FOR %d ROUBLES PER DAY.", mas[i].ID, mas[i].COST);
  108.                             break;
  109.                         }
  110.  
  111.                     }
  112.                 }
  113.             }
  114.  
  115.  
  116.  
  117.         }
  118.         else
  119.             if (u == t[0])
  120.             {
  121.                 for (int n = 0; n < kolvo_zaprosov; n++) // Проход по циклу и определение существования комнаты из запроса, если существует, то вывод информации о ней.
  122.                 {
  123.                     bool log = false;
  124.                     fscanf(I, "%*s%*s%*s%*s%d", &nomer_komnat); // Считывание номера комнаты с файла rooms.txt.
  125.                     for (int i = 0; i < kolvo_komnat; i++)
  126.                     {
  127.                         if (mas[i].ID == nomer_komnat) // Сравнивание номеров комнат.
  128.                         {
  129.                             log = true;
  130.                             fprintf(Q, "ROOM %d : CAPACITY %d, %d BATHROOMS, %d ROUBLES. \n", nomer_komnat, mas[i].CAPACITY, mas[i].BANUM, mas[i].COST);
  131.                             break;
  132.                         }
  133.                     }
  134.                 }
  135.             }
  136.     }
  137.     fclose(R);//закрываем файл
  138.     fclose(I);//закрываем файл
  139.     fclose(O);
  140.     fclose(Z);
  141.     fclose(Q);
  142.     return 0;
  143.  
  144. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement