Ограничение времени
1 секунда
ограничение памяти
64mb
ввод
стандартный ввод или input.txt
вывод
стандартный вывод или output.txt
ваш знакомый — владелец сети кинотеатров. в каждом принадлежащем ему кинотеатре есть несколько кинозалов, причем в каждом зале кресла могут быть расположены по-разному. кроме того, различные залы имеют разное расписание сеансов. чтобы не запутаться во всём этом, знакомый попросил вас написать для него программу, моделирующую работу кинотеатров. такую программу называют «билетной системой». программа должна предоставлять пользователю возможность вносить «в систему» всю необходимую справочную информацию: добавлять кинотеатр, добавлять зал в кинотеатр, задавать конфигурацию кресел, создавать сеанс определённого фильма (с определённой длительностью и в определённое время). ну и самое главное: «система» должна уметь «продавать» билеты, отвечать на запросы о том, когда и где (в каком кинотеатре и зале) будет ближайший сеанс (на который есть свободные места) выбранного фильма, печатать для сеанса план зала с указанием занятых и свободных мест.
не лишними будут также и более специфичные возможности. например, отвечать, на какой ближайший сеанс в данном кинотеатре есть 3 свободных места рядом.
1. Класс "Кинотеатр":
- Методы:
- Добавить зал в кинотеатр
- Показать список всех кинозалов в кинотеатре
- Найти ближайший сеанс выбранного фильма
- Свойства:
- Название кинотеатра
- Список кинозалов
2. Класс "Зал":
- Методы:
- Добавить сеанс в зал
- Показать план зала с указанием занятых и свободных мест
- Свойства:
- Название зала
- Конфигурация кресел (можно реализовать с помощью двухмерного массива, где занятое кресло обозначается как "X", а свободное как "-")
3. Класс "Сеанс":
- Методы:
- Показать длительность сеанса
- Показать время начала сеанса
- Свойства:
- Название фильма
- Длительность сеанса
- Время начала сеанса
4. Класс "Билетная система":
- Методы:
- Добавить кинотеатр в систему
- Найти ближайший сеанс с определенным количеством свободных мест рядом
- Продать билет
- Свойства:
- Список всех кинотеатров в системе
Теперь рассмотрим подробно каждый из методов:
1. Метод "Добавить зал в кинотеатр" класса "Кинотеатр":
- Создаем экземпляр класса "Зал" с указанным названием
- Добавляем этот экземпляр в список кинозалов кинотеатра
2. Метод "Показать список всех кинозалов в кинотеатре" класса "Кинотеатр":
- Выводим названия всех кинозалов из списка кинозалов кинотеатра
3. Метод "Найти ближайший сеанс выбранного фильма" класса "Кинотеатр":
- Проходим по всем кинозалам кинотеатра
- Проверяем каждый сеанс в каждом зале:
- Если название фильма совпадает с выбранным фильмом и имеются свободные места, то записываем этот сеанс в список доступных сеансов
- Возвращаем список доступных сеансов или выводим сообщение о том, что нет доступных сеансов
4. Метод "Добавить сеанс в зал" класса "Зал":
- Создаем экземпляр класса "Сеанс" с указанными параметрами (название фильма, длительность сеанса, время начала сеанса)
- Добавляем этот сеанс в список сеансов зала
5. Метод "Показать план зала с указанием занятых и свободных мест" класса "Зал":
- Проходим по конфигурации кресел и выводим ее на экран, заменяя символы "X" на занятые места и "-" на свободные места
6. Метод "Показать длительность сеанса" класса "Сеанс":
- Возвращаем длительность сеанса
7. Метод "Показать время начала сеанса" класса "Сеанс":
- Возвращаем время начала сеанса
8. Метод "Добавить кинотеатр в систему" класса "Билетная система":
- Создаем экземпляр класса "Кинотеатр" с указанным названием
- Добавляем этот кинотеатр в список всех кинотеатров в системе
9. Метод "Найти ближайший сеанс с определенным количеством свободных мест рядом" класса "Билетная система":
- Проходим по всем кинотеатрам в системе
- Используем метод "Найти ближайший сеанс выбранного фильма" класса "Кинотеатр" для каждого кинотеатра
- Фильтруем список доступных сеансов по количеству свободных мест рядом
- Возвращаем список отфильтрованных сеансов или выводим сообщение о том, что таких сеансов нет
10. Метод "Продать билет" класса "Билетная система":
- Получаем выбранный сеанс и количество билетов от пользователя
- Проверяем, достаточно ли свободных мест на выбранном сеансе
- Если да, то помечаем соответствующее количество мест как занятые в конфигурации кресел зала
- Если нет, выводим сообщение о том, что свободных мест недостаточно
Таким образом, эта билетная система позволит добавлять кинотеатры, залы, сеансы и продавать билеты, а также отвечать на запросы о ближайших сеансах и планах залов. Каждый шаг решения подробно объяснен и обоснован, чтобы его можно было понять школьнику.