Advertisement
JouJoy

Untitled

Apr 16th, 2020
298
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 5.37 KB | None | 0 0
  1. #include<fstream>
  2. #include<iomanip>
  3. #include <iostream>
  4. #include <Windows.h>// для русского языка
  5. using namespace std;
  6. struct serial
  7. {
  8.     string name;
  9.     string janr;
  10.     int seasons;
  11.     double episods;
  12.     double time;
  13.     double top;
  14. };
  15. int main()
  16. {
  17.     setlocale(LC_ALL, "Russian");
  18.     SetConsoleOutputCP(1251);
  19.     SetConsoleCP(1251);
  20.     serial a;
  21.     int colvo = 0;
  22.     serial x[100];
  23.     int i = 0;
  24.     string h;
  25.     ifstream in("ser.txt");
  26.     ofstream out("binserials.bin", ios::binary);
  27.     if (!in)
  28.     {
  29.         cout << "ERROR 404: File not found" << endl;
  30.         exit(-1);
  31.     }
  32.     int n;
  33.     int l = 0;
  34.     cout << "Добрый вечер, сэр. Какой сериал предпочтете сегодня?" << endl;
  35.  
  36.     l = 0;
  37.     cout << "Если вы хотите выполнить поиск по названию, введите 1.\nЕсли вы хотите найти сериал по характеристикам, введите 2." << endl;
  38.     cin >> n;
  39.     int b = 1;
  40.     int g = 1;
  41.     while (b && n != 2)
  42.     {
  43.         if (n == 1)
  44.         {
  45.             g = 0;
  46.             cout << "Введите точное название сериала" << endl;
  47.             cin >> h;
  48.             n = 2;
  49.             while (in >> a.name >> a.janr >> a.seasons >> a.episods >> a.time >> a.top)
  50.             {
  51.                 x[i] = a;
  52.                 out.write((char*)&x[i], sizeof(struct serial));
  53.                 i++;
  54.                 b = 0;
  55.             }
  56.         }
  57.         else
  58.         {
  59.             cout << "Ну будь ты человеком, ну нормально введи" << endl;
  60.             cout << "Если вы хотите выполнить поиск по названию, введите 1.\nЕсли вы хотите найти сериал по характеристикам, введите 2." << endl;
  61.             cin >> n;
  62.         }
  63.     }
  64.     char q;
  65.     if (b)
  66.     {
  67.         int minses = -20000;
  68.         int maxses = 200000;
  69.         int minep = -20000;
  70.         int maxep = 200000;
  71.         int mintime = -20000;
  72.         int maxtime = 200000;
  73.         int mtop = -200000;
  74.         bool janr1 = 0;
  75.         cout << "Какое максимальное количество сериалов вам нужно показать?" << endl;
  76.         cin >> n;
  77.         cout << "Имеет ли для вас значение: y/n" << endl;
  78.         cout << "Жанр?: "; cin >> q;
  79.         switch (q)
  80.         {
  81.         case 'y':
  82.         {
  83.             janr1 = true;
  84.             cout << "Какой жанр желаете?" << endl;
  85.             cin >> h;
  86.             break;
  87.         }
  88.         case 'n':
  89.         {
  90.             janr1 = 0;
  91.             break;
  92.         }
  93.         default: break;
  94.         }
  95.         cout << "\nКоличество сезонов?: "; cin >> q;
  96.         switch (q)
  97.         {
  98.         case 'y':
  99.         {
  100.             int minses;
  101.             int maxses;
  102.             cout << "Минимум сезонов: " << endl;
  103.             cin >> minses;
  104.             cout << "Максимум сезонов: " << endl;
  105.             cin >> maxses;
  106.             break;
  107.         }
  108.         case 'n':
  109.         {
  110.             break;
  111.         }
  112.         }
  113.         cout << "Количество эпизодов в кадом сезоне?: "; cin >> q;
  114.         switch (q)
  115.         {
  116.         case 'y':
  117.         {
  118.             cout << "Минимум эпизодов: " << endl;
  119.             cin >> minep;
  120.             cout << "Максимум эпизодов: " << endl;
  121.             cin >> maxep;
  122.             break;
  123.         }
  124.         case 'n':
  125.         {
  126.             break;
  127.         }
  128.         default: break;
  129.         }
  130.         cout << "Время одного эпизода?: "; cin >> q;
  131.         switch (q)
  132.         {
  133.         case 'y':
  134.         {
  135.             cout << "От (мин) :" << endl;
  136.             cin >> mintime;
  137.             cout << "До (мин) :" << endl;
  138.             cin >> maxtime;
  139.             break;
  140.         }
  141.         case 'n':
  142.         {
  143.             break;
  144.         }
  145.         default: break;
  146.         }
  147.         cout << "Рейтинг?: "; cin >> q;
  148.         switch (q)
  149.         {
  150.         case 'y':
  151.         {
  152.             cout << "От:" << endl;
  153.             cin >> mtop;
  154.             break;
  155.         }
  156.         case 'n':
  157.         {
  158.             break;
  159.         }
  160.         default: break;
  161.         }
  162.         cout << endl;
  163.         while (in >> a.name >> a.janr >> a.seasons >> a.episods >> a.time >> a.top)
  164.         {
  165.             if (janr1) {
  166.                 if ((a.janr == h) && (a.seasons <= maxses) && (minses <= a.seasons) && (a.episods <= maxep) && (minep <= a.episods) && (a.time <= maxtime) && (mintime <= a.time) && (a.top >= mtop))
  167.                 {
  168.                     l = 1;
  169.                     x[i] = a;
  170.                     i++;
  171.                     colvo++;
  172.                 }
  173.             }
  174.             else
  175.             {
  176.                 if ((a.seasons <= maxses) && (minses <= a.seasons) && (a.episods <= maxep) && (minep <= a.episods) && (a.time <= maxtime) && (mintime <= a.time) && (a.top >= mtop))
  177.                 {
  178.                     l = 1;
  179.                     x[i] = a;
  180.                     colvo++;
  181.                     i++;
  182.                 }
  183.             }
  184.         }
  185.         int j1, i1;
  186.         serial top1;
  187.         for (j1 = 0; j1 < colvo; j1++)
  188.         {
  189.             for (i1 = 0; i1 < colvo - 1; i1++)
  190.             {
  191.                 if (x[i1].top < x[i1 + 1].top)
  192.                 {
  193.                     top1 = x[i1];
  194.                     x[i1] = x[i1 + 1];
  195.                     x[i1 + 1] = top1;
  196.                 }
  197.             }
  198.         }
  199.         for (j1 = 0; j1 < colvo; j1++)
  200.         {
  201.             out.write((char*)&x[j1], sizeof(struct serial));
  202.         }
  203.        
  204.     }
  205.         in.close();
  206.         out.close();
  207.  
  208.         ifstream inbin("binserial.bin", ios::binary);
  209.         for (int j = 0; j < i; j++)
  210.         {
  211.             inbin.read((char*)&x[j], sizeof(struct serial));
  212.             if (!g && (h == x[j].name))
  213.             {
  214.                 l = 1;
  215.                 cout << "Ваша сериал найден:" << endl;
  216.                 cout << "Название: " << x[j].name << setw(15) << "Жанр: " << x[j].janr << setw(30) << "Рейтинг: " << x[j].top << endl;
  217.             }
  218.         }
  219.         if (g && l)
  220.         {
  221.             cout << "Подходящие сериалы:" << endl;
  222.             for (int k = 0; (k < n) && (k < colvo); k++)
  223.             {
  224.                 inbin.read((char*)&x[k], sizeof(struct serial));
  225.                 cout << "Название: " << x[k].name << setw(15) << "Жанр: " << x[k].janr << setw(30) << "Рейтинг: " << x[k].top << endl;
  226.             }
  227.         }
  228.  
  229.         if (!l)
  230.         {
  231.             cout << "По вашему запросу ничего не найдено, измените требования" << endl;
  232.         }
  233.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement