С++
Создать лист кинофильмов (название, режиссер, рейтинг, bool 18+).
Используя итераторы, или for each:
1. Реализовать функцию, которая принимает лист фильмов и всех их выводит на экран.
2. Реализовать функцию, которая принимает лист фильмов и имя режиссера, и выводит все фильмы только этого режиссера.
3. Понизить рейтинг всем фильмам режиссера А (любого).
4*. Отсортировать по режиссеру.
5. Удалить все 18+ фильмы.
Ответы
Відповідь:
Снизу
Пояснення:
Ниже приведен пример кода на C++, который выполняет задачи, описанные в вашем вопросе. Пожалуйста, учтите, что это пример, и он может потребовать доработки в зависимости от вашего конкретного использования.
```cpp
#include <iostream>
#include <list>
#include <string>
struct Film {
std::string title;
std::string director;
double rating;
bool is18Plus;
};
// Функция для вывода всех фильмов из списка
void printAllFilms(const std::list<Film>& films) {
for (const Film& film : films) {
std::cout << "Title: " << film.title << ", Director: " << film.director << ", Rating: " << film.rating;
if (film.is18Plus) {
std::cout << " (18+)";
}
std::cout << std::endl;
}
}
// Функция для вывода всех фильмов указанного режиссера
void printFilmsByDirector(const std::list<Film>& films, const std::string& directorName) {
for (const Film& film : films) {
if (film.director == directorName) {
std::cout << "Title: " << film.title << ", Director: " << film.director << ", Rating: " << film.rating;
if (film.is18Plus) {
std::cout << " (18+)";
}
std::cout << std::endl;
}
}
}
// Функция для понижения рейтинга всем фильмам режиссера с заданным именем
void decreaseRatingByDirector(std::list<Film>& films, const std::string& directorName, double decreaseAmount) {
for (Film& film : films) {
if (film.director == directorName) {
film.rating -= decreaseAmount;
}
}
}
// Функция для удаления всех 18+ фильмов из списка
void remove18PlusFilms(std::list<Film>& films) {
films.remove_if([](const Film& film) { return film.is18Plus; });
}
int main() {
// Создаем список фильмов
std::list<Film> films = {
{"Film1", "Director1", 8.2, false},
{"Film2", "Director2", 7.5, false},
{"Film3", "Director1", 6.8, true},
{"Film4", "Director3", 9.0, false},
};
// 1. Выводим все фильмы на экран
std::cout << "All Films:" << std::endl;
printAllFilms(films);
// 2. Выводим фильмы режиссера "Director1"
std::cout << "\nFilms by Director1:" << std::endl;
printFilmsByDirector(films, "Director1");
// 3. Понижаем рейтинг фильмов режиссера "Director1" на 0.5
decreaseRatingByDirector(films, "Director1", 0.5);
// Выводим обновленный список фильмов
std::cout << "\nUpdated Films:" << std::endl;
printAllFilms(films);
// 5. Удаляем все 18+ фильмы
remove18PlusFilms(films);
// Выводим финальный список фильмов после удаления 18+
std::cout << "\nFilms after removing 18+:" << std::endl;
printAllFilms(films);
return 0;
}
```
Этот код демонстрирует основные операции с листом фильмов, как описано в вашем вопросе.