Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<fstream>
- #include<iomanip>
- #include <iostream>
- #include <Windows.h>// для русского языка
- using namespace std;
- struct serial
- {
- string name;
- string janr;
- int seasons;
- double episods;
- double time;
- double top;
- };
- int main()
- {
- setlocale(LC_ALL, "Russian");
- SetConsoleOutputCP(1251);
- SetConsoleCP(1251);
- serial a;
- int colvo = 0;
- serial x[100];
- int i = 0;
- string h;
- ifstream in("ser.txt");
- ofstream out("binserials.bin", ios::binary);
- if (!in)
- {
- cout << "ERROR 404: File not found" << endl;
- exit(-1);
- }
- int n;
- int l = 0;
- cout << "Добрый вечер, сэр. Какой сериал предпочтете сегодня?" << endl;
- l = 0;
- cout << "Если вы хотите выполнить поиск по названию, введите 1.\nЕсли вы хотите найти сериал по характеристикам, введите 2." << endl;
- cin >> n;
- int b = 1;
- int g = 1;
- while (b && n != 2)
- {
- if (n == 1)
- {
- g = 0;
- cout << "Введите точное название сериала" << endl;
- cin >> h;
- n = 2;
- while (in >> a.name >> a.janr >> a.seasons >> a.episods >> a.time >> a.top)
- {
- x[i] = a;
- out.write((char*)&x[i], sizeof(struct serial));
- i++;
- b = 0;
- }
- }
- else
- {
- cout << "Ну будь ты человеком, ну нормально введи" << endl;
- cout << "Если вы хотите выполнить поиск по названию, введите 1.\nЕсли вы хотите найти сериал по характеристикам, введите 2." << endl;
- cin >> n;
- }
- }
- char q;
- if (b)
- {
- int minses = -20000;
- int maxses = 200000;
- int minep = -20000;
- int maxep = 200000;
- int mintime = -20000;
- int maxtime = 200000;
- int mtop = -200000;
- bool janr1 = 0;
- cout << "Какое максимальное количество сериалов вам нужно показать?" << endl;
- cin >> n;
- cout << "Имеет ли для вас значение: y/n" << endl;
- cout << "Жанр?: "; cin >> q;
- switch (q)
- {
- case 'y':
- {
- janr1 = true;
- cout << "Какой жанр желаете?" << endl;
- cin >> h;
- break;
- }
- case 'n':
- {
- janr1 = 0;
- break;
- }
- default: break;
- }
- cout << "\nКоличество сезонов?: "; cin >> q;
- switch (q)
- {
- case 'y':
- {
- int minses;
- int maxses;
- cout << "Минимум сезонов: " << endl;
- cin >> minses;
- cout << "Максимум сезонов: " << endl;
- cin >> maxses;
- break;
- }
- case 'n':
- {
- break;
- }
- }
- cout << "Количество эпизодов в кадом сезоне?: "; cin >> q;
- switch (q)
- {
- case 'y':
- {
- cout << "Минимум эпизодов: " << endl;
- cin >> minep;
- cout << "Максимум эпизодов: " << endl;
- cin >> maxep;
- break;
- }
- case 'n':
- {
- break;
- }
- default: break;
- }
- cout << "Время одного эпизода?: "; cin >> q;
- switch (q)
- {
- case 'y':
- {
- cout << "От (мин) :" << endl;
- cin >> mintime;
- cout << "До (мин) :" << endl;
- cin >> maxtime;
- break;
- }
- case 'n':
- {
- break;
- }
- default: break;
- }
- cout << "Рейтинг?: "; cin >> q;
- switch (q)
- {
- case 'y':
- {
- cout << "От:" << endl;
- cin >> mtop;
- break;
- }
- case 'n':
- {
- break;
- }
- default: break;
- }
- cout << endl;
- while (in >> a.name >> a.janr >> a.seasons >> a.episods >> a.time >> a.top)
- {
- if (janr1) {
- 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))
- {
- l = 1;
- x[i] = a;
- i++;
- colvo++;
- }
- }
- else
- {
- if ((a.seasons <= maxses) && (minses <= a.seasons) && (a.episods <= maxep) && (minep <= a.episods) && (a.time <= maxtime) && (mintime <= a.time) && (a.top >= mtop))
- {
- l = 1;
- x[i] = a;
- colvo++;
- i++;
- }
- }
- }
- int j1, i1;
- serial top1;
- for (j1 = 0; j1 < colvo; j1++)
- {
- for (i1 = 0; i1 < colvo - 1; i1++)
- {
- if (x[i1].top < x[i1 + 1].top)
- {
- top1 = x[i1];
- x[i1] = x[i1 + 1];
- x[i1 + 1] = top1;
- }
- }
- }
- for (j1 = 0; j1 < colvo; j1++)
- {
- out.write((char*)&x[j1], sizeof(struct serial));
- }
- }
- in.close();
- out.close();
- ifstream inbin("binserial.bin", ios::binary);
- for (int j = 0; j < i; j++)
- {
- inbin.read((char*)&x[j], sizeof(struct serial));
- if (!g && (h == x[j].name))
- {
- l = 1;
- cout << "Ваша сериал найден:" << endl;
- cout << "Название: " << x[j].name << setw(15) << "Жанр: " << x[j].janr << setw(30) << "Рейтинг: " << x[j].top << endl;
- }
- }
- if (g && l)
- {
- cout << "Подходящие сериалы:" << endl;
- for (int k = 0; (k < n) && (k < colvo); k++)
- {
- inbin.read((char*)&x[k], sizeof(struct serial));
- cout << "Название: " << x[k].name << setw(15) << "Жанр: " << x[k].janr << setw(30) << "Рейтинг: " << x[k].top << endl;
- }
- }
- if (!l)
- {
- cout << "По вашему запросу ничего не найдено, измените требования" << endl;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement