Предмет: Информатика,
автор: Kukuwka0Ha0DepeBe
С++
Создать лист кинофильмов (название, режиссер, рейтинг, bool 18+).
Используя итераторы, или for each:
1. Реализовать функцию, которая принимает лист фильмов и всех их выводит на экран.
2. Реализовать функцию, которая принимает лист фильмов и имя режиссера, и выводит все фильмы только этого режиссера.
3. Понизить рейтинг всем фильмам режиссера А (любого).
4*. Отсортировать по режиссеру.
5. Удалить все 18+ фильмы.
Ответы
Автор ответа:
0
#include
#include
#include
#include
struct Movie {
std::string title;
std::string director;
double rating;
bool isAdult;
};
void displayMovies(const std::list& movies) {
for (const Movie& movie : movies) {
std::cout << "Название: " << movie.title << std::endl;
std::cout << "Режиссер: " << movie.director << std::endl;
std::cout << "Рейтинг: " << movie.rating << std::endl;
std::cout << (movie.isAdult ? "Для взрослых" : "Для всех возрастов") << std::endl;
std::cout << std::endl;
}
}
void displayMoviesByDirector(const std::list& movies, const std::string& directorName) {
for (const Movie& movie : movies) {
if (movie.director == directorName) {
std::cout << "Название: " << movie.title << std::endl;
std::cout << "Режиссер: " << movie.director << std::endl;
std::cout << "Рейтинг: " << movie.rating << std::endl;
std::cout << (movie.isAdult ? "Для взрослых" : "Для всех возрастов") << std::endl;
std::cout << std::endl;
}
}
}
void decreaseRatingByDirector(std::list& movies, const std::string& directorName, double decreaseAmount) {
for (Movie& movie : movies) {
if (movie.director == directorName) {
movie.rating -= decreaseAmount;
if (movie.rating < 0.0) {
movie.rating = 0.0;
}
}
}
}
bool sortByDirector(const Movie& movie1, const Movie& movie2) {
return movie1.director < movie2.director;
}
int main() {
std::list movies = {
{"Фильм 1", "Режиссер А", 8.5, false},
{"Фильм 2", "Режиссер Б", 7.9, false},
{"Фильм 3", "Режиссер А", 9.2, true},
{"Фильм 4", "Режиссер В", 6.8, true},
{"Фильм 5", "Режиссер Б", 8.0, false}
};
// 1. Вывести все фильмы на экран.
std::cout << "Все фильмы:" << std::endl;
displayMovies(movies);
// 2. Вывести фильмы режиссера "Режиссер А".
std::cout << "Фильмы режиссера 'Режиссер А':" << std::endl;
displayMoviesByDirector(movies, "Режиссер А");
// 3. Понизить рейтинг фильмов режиссера "Режиссер А".
decreaseRatingByDirector(movies, "Режиссер А", 1.0);
// 4*. Отсортировать по режиссеру.
movies.sort(sortByDirector);
// 5. Удалить все 18+ фильмы.
movies.remove_if([](const Movie& movie) { return movie.isAdult; });
std::cout << "Фильмы после удаления 18+ и сортировки:" << std::endl;
displayMovies(movies);
return 0;
}
#include
#include
#include
struct Movie {
std::string title;
std::string director;
double rating;
bool isAdult;
};
void displayMovies(const std::list& movies) {
for (const Movie& movie : movies) {
std::cout << "Название: " << movie.title << std::endl;
std::cout << "Режиссер: " << movie.director << std::endl;
std::cout << "Рейтинг: " << movie.rating << std::endl;
std::cout << (movie.isAdult ? "Для взрослых" : "Для всех возрастов") << std::endl;
std::cout << std::endl;
}
}
void displayMoviesByDirector(const std::list& movies, const std::string& directorName) {
for (const Movie& movie : movies) {
if (movie.director == directorName) {
std::cout << "Название: " << movie.title << std::endl;
std::cout << "Режиссер: " << movie.director << std::endl;
std::cout << "Рейтинг: " << movie.rating << std::endl;
std::cout << (movie.isAdult ? "Для взрослых" : "Для всех возрастов") << std::endl;
std::cout << std::endl;
}
}
}
void decreaseRatingByDirector(std::list& movies, const std::string& directorName, double decreaseAmount) {
for (Movie& movie : movies) {
if (movie.director == directorName) {
movie.rating -= decreaseAmount;
if (movie.rating < 0.0) {
movie.rating = 0.0;
}
}
}
}
bool sortByDirector(const Movie& movie1, const Movie& movie2) {
return movie1.director < movie2.director;
}
int main() {
std::list movies = {
{"Фильм 1", "Режиссер А", 8.5, false},
{"Фильм 2", "Режиссер Б", 7.9, false},
{"Фильм 3", "Режиссер А", 9.2, true},
{"Фильм 4", "Режиссер В", 6.8, true},
{"Фильм 5", "Режиссер Б", 8.0, false}
};
// 1. Вывести все фильмы на экран.
std::cout << "Все фильмы:" << std::endl;
displayMovies(movies);
// 2. Вывести фильмы режиссера "Режиссер А".
std::cout << "Фильмы режиссера 'Режиссер А':" << std::endl;
displayMoviesByDirector(movies, "Режиссер А");
// 3. Понизить рейтинг фильмов режиссера "Режиссер А".
decreaseRatingByDirector(movies, "Режиссер А", 1.0);
// 4*. Отсортировать по режиссеру.
movies.sort(sortByDirector);
// 5. Удалить все 18+ фильмы.
movies.remove_if([](const Movie& movie) { return movie.isAdult; });
std::cout << "Фильмы после удаления 18+ и сортировки:" << std::endl;
displayMovies(movies);
return 0;
}
Похожие вопросы
Предмет: Литература,
автор: danil141408
Предмет: Алгебра,
автор: melnikvarvara1
Предмет: Алгебра,
автор: caosc312
Предмет: Русский язык,
автор: darakolosskova
Предмет: Геометрия,
автор: lisa170102005