8.14.10
27.06.2022
JS: 2.15.10
CSS: 4.9.15
jQuery: 3.6.0
DataForLocalStorage: 2022-08-09 09:46:01-standard
Программирование Компьютеры Операционные системы Мобильные телефоны
Создание программ на языках C и C++.
#include <locale> #include <limits> #include <iostream> #include <iomanip> #include <string> #include <vector> #include <algorithm> using namespace std; class CDisk { public: CDisk(wstring Movie,wstring Director,wstring Genre,int Rate,double Price) { _movie=Movie; _director=Director; _genre=Genre; _rate=Rate; _price=Price; } static bool ifMovie(wstring str,const CDisk& disk) { if(str==disk._movie)return true; else return false; } static bool ifDirector(wstring str,const CDisk& disk) { if(str==disk._director)return true; else return false; } static bool ifGenre(wstring str,const CDisk& disk) { if(str==disk._genre)return true; else return false; } int rate() const { return _rate; } double price()const { return _price; } friend wostream& operator<<(wostream& stream,const CDisk& disk); private: wstring _movie; wstring _director; wstring _genre; int _rate; double _price; }; vector<CDisk> collection; int GetOperation(); void ShowAndAdd(); void FindMovie(); void FindDirector(); void FindGenre(); void FindMaxRateInGenre(); int main() { locale::global(locale("rus_rus.866")); while(true) { switch(GetOperation()) { case 1: FindMovie(); break; case 2: FindDirector(); break; case 3: FindGenre(); break; case 4: FindMaxRateInGenre(); break; case 5: ShowAndAdd(); break; case 6: return 0; } } return 0; } wostream& operator<<(wostream& stream,const CDisk& disk) { stream<<L"Название:"<<disk._movie<<endl; stream<<L"Режиссер:"<<disk._director<<endl; stream<<L"Жанр:"<<disk._genre<<endl; stream<<L"Популярность:"<<disk._rate<<endl; stream<<L"Цена:"<<setprecision(2)<<disk._price<<endl; return stream; } void line() { wcout<<L"----------------------------------------------------------------"<<endl; } int GetOperation() { while(true) { wcout<<L"Выберите наобходимое действие"<<endl; wcout<<L"1-Поиск по названию"<<endl; wcout<<L"2-Поиск по режиссеру"<<endl; wcout<<L"3-Поиск пожанру"<<endl; wcout<<L"4-Самый популярный фильм в жанре"<<endl; wcout<<L"5-Показ всех записей и добавление"<<endl; wcout<<L"6-Выход"<<endl; wcout<<L"Сделайте свой выбор:"; int choice; wcin>>choice; if(wcin.fail()) { wcout<<L"Ошибка. Будьте внимательней."<<endl; wcin.clear(); wcin.ignore(numeric_limits<streamsize>::max(),L'\n'); continue; } wcin.ignore(numeric_limits<streamsize>::max(),L'\n'); if(choice>=1&&choice<=6)return choice; else { wcout<<L"Неверный выбор"<<endl; } line(); } } void print(const CDisk& disk) { wcout<<disk; line(); } void ShowAndAdd() { wcout<<L"В коллекции имеются следующие фильмы:"<<endl; line(); for_each(collection.begin(),collection.end(),print); wcout<<L"Добавьте фильмы в коллекцию"<<endl; while(true) { wstring movie,director,genre; int rate; double price; wcout<<L"Название(пустая строка для завершения):"; getline(wcin,movie); if(!movie.length())break; wcout<<L"Режиссер:"; getline(wcin,director); wcout<<L"Жанр:"; getline(wcin,genre); wcout<<L"Популярность:"; wcin>>rate; wcout<<L"Цена:"; wcin>>price; collection.push_back(CDisk(movie,director,genre,rate,price)); wcin.ignore(numeric_limits<streamsize>::max(),L'\n'); } } void FindDisk(wstring str,bool (*boolFunc)(wstring,const CDisk&),void (*actionFunc)(const CDisk&)) { for(vector<CDisk>::iterator it=collection.begin();it!=collection.end();it++) { if(boolFunc(str,*it)) actionFunc(*it); } } void FindMovie() { wstring movie; wcout<<L"Введите название фильма для поиска:"; getline(wcin,movie); if(movie.length()) { wcout<<L"С названием \""<<movie<<L"\" найдены следующие фильмы:"<<endl; FindDisk(movie,CDisk::ifMovie,print); } } void FindDirector() { wstring director; wcout<<L"Введите имя режиссера для поиска:"; getline(wcin,director); if(director.length()) { wcout<<L"С режиссером \""<<director<<L"\" найдены следующие фильмы:"<<endl; FindDisk(director,CDisk::ifDirector,print); } } void FindGenre() { wstring genre; wcout<<L"Введите жанр для поиска:"; getline(wcin,genre); if(genre.length()) { wcout<<L"В жанре \""<<genre<<L"\" найдены следующие фильмы:"<<endl; FindDisk(genre,CDisk::ifGenre,print); } } static const CDisk* maxRate; void MaxInGenre(const CDisk& disk) { if(maxRate) { if(maxRate->rate()<disk.rate()) maxRate=&disk; } else maxRate=&disk; } void PrintIfMaxInGenre(const CDisk& disk) { if(maxRate&&(disk.rate()==maxRate->rate()))print(disk); } void FindMaxRateInGenre() { wstring genre; wcout<<L"Введите жанр для поиска:"; getline(wcin,genre); maxRate=0; if(genre.length()) { FindDisk(genre,CDisk::ifGenre,MaxInGenre); wcout<<L"Максимальный рейтинг у следующих фильмов:"<<endl; FindDisk(genre,CDisk::ifGenre,PrintIfMaxInGenre); } maxRate=0; }
Выберите наобходимое действие 1-Поиск по названию 2-Поиск по режиссеру 3-Поиск пожанру 4-Самый популярный фильм в жанре 5-Показ всех записей и добавление 6-Выход Сделайте свой выбор:5 В коллекции имеются следующие фильмы: ---------------------------------------------------------------- Добавьте фильмы в коллекцию Название(пустая строка для завершения):Бойцовский клуб Режиссер:Финчер Жанр:боевик Популярность:9 Цена:40 Название(пустая строка для завершения):Список Шиндлера Режиссер:Спилберг Жанр:драма Популярность:9 Цена:45 Название(пустая строка для завершения):Криминальное чтиво Режиссер:Тарантино Жанр:криминал Популярность:8 Цена:35 Название(пустая строка для завершения):Матрица Режиссер:Вачовски Жанр:фантастика Популярность:8 Цена:30 Название(пустая строка для завершения):Чужой 3 Режиссер:Финчер Жанр:фантастика Популярность:7 Цена:30 Название(пустая строка для завершения): Выберите наобходимое действие 1-Поиск по названию 2-Поиск по режиссеру 3-Поиск пожанру 4-Самый популярный фильм в жанре 5-Показ всех записей и добавление 6-Выход Сделайте свой выбор:5 В коллекции имеются следующие фильмы: ---------------------------------------------------------------- Название:Бойцовский клуб Режиссер:Финчер Жанр:боевик Популярность:9 Цена:40 ---------------------------------------------------------------- Название:Список Шиндлера Режиссер:Спилберг Жанр:драма Популярность:9 Цена:45 ---------------------------------------------------------------- Название:Криминальное чтиво Режиссер:Тарантино Жанр:криминал Популярность:8 Цена:35 ---------------------------------------------------------------- Название:Матрица Режиссер:Вачовски Жанр:фантастика Популярность:8 Цена:30 ---------------------------------------------------------------- Название:Чужой 3 Режиссер:Финчер Жанр:фантастика Популярность:7 Цена:30 ---------------------------------------------------------------- Добавьте фильмы в коллекцию Название(пустая строка для завершения): Выберите наобходимое действие 1-Поиск по названию 2-Поиск по режиссеру 3-Поиск пожанру 4-Самый популярный фильм в жанре 5-Показ всех записей и добавление 6-Выход Сделайте свой выбор:1 Введите название фильма для поиска:Матрица С названием "Матрица" найдены следующие фильмы: Название:Матрица Режиссер:Вачовски Жанр:фантастика Популярность:8 Цена:30 ---------------------------------------------------------------- Выберите наобходимое действие 1-Поиск по названию 2-Поиск по режиссеру 3-Поиск пожанру 4-Самый популярный фильм в жанре 5-Показ всех записей и добавление 6-Выход Сделайте свой выбор:2 Введите имя режиссера для поиска:Финчер С режиссером "Финчер" найдены следующие фильмы: Название:Бойцовский клуб Режиссер:Финчер Жанр:боевик Популярность:9 Цена:40 ---------------------------------------------------------------- Название:Чужой 3 Режиссер:Финчер Жанр:фантастика Популярность:7 Цена:30 ---------------------------------------------------------------- Выберите наобходимое действие 1-Поиск по названию 2-Поиск по режиссеру 3-Поиск пожанру 4-Самый популярный фильм в жанре 5-Показ всех записей и добавление 6-Выход Сделайте свой выбор:3 Введите жанр для поиска:фантастика В жанре "фантастика" найдены следующие фильмы: Название:Матрица Режиссер:Вачовски Жанр:фантастика Популярность:8 Цена:30 ---------------------------------------------------------------- Название:Чужой 3 Режиссер:Финчер Жанр:фантастика Популярность:7 Цена:30 ---------------------------------------------------------------- Выберите наобходимое действие 1-Поиск по названию 2-Поиск по режиссеру 3-Поиск пожанру 4-Самый популярный фильм в жанре 5-Показ всех записей и добавление 6-Выход Сделайте свой выбор:4 Введите жанр для поиска:боевик Максимальный рейтинг у следующих фильмов: Название:Бойцовский клуб Режиссер:Финчер Жанр:боевик Популярность:9 Цена:40 ---------------------------------------------------------------- Выберите наобходимое действие 1-Поиск по названию 2-Поиск по режиссеру 3-Поиск пожанру 4-Самый популярный фильм в жанре 5-Показ всех записей и добавление 6-Выход Сделайте свой выбор:
Нет сообщений в мини-форуме
|