Предмет: Информатика, автор: Kukuwka0Ha0DepeBe

С++
Создать лист кинофильмов (название, режиссер, рейтинг, bool 18+).

Используя итераторы, или for each:

1. Реализовать функцию, которая принимает лист фильмов и всех их выводит на экран.
2. Реализовать функцию, которая принимает лист фильмов и имя режиссера, и выводит все фильмы только этого режиссера.

3. Понизить рейтинг всем фильмам режиссера А (любого).

4*. Отсортировать по режиссеру.

5. Удалить все 18+ фильмы.

Ответы

Автор ответа: markus2131276
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;
}
Похожие вопросы
Предмет: Литература, автор: danil141408
Предмет: Алгебра, автор: caosc312