Р. ЛАФОРЕ ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ В C++ (4-Е ИЗДАНИЕ) (часть13) онлайн

Работа программы ELEV

При запуске вы увидите четыре лифта, находящихся внизу экрана, а также вер-

тикальный список чисел слева от 1 до 20, увеличивающихся снизу вверх. Изна-

чально все лифты на первом этаже. Это все показано на рис. 13.4

Рис. 13.4. Начальное состояние программы ELEV

Запрос этажа

При нажатии Enter внизу экрана появится текст:

На каком Вы этаже?

Можно ввести любое число от 1 до 20. Если вы только что приехали на рабо-

ту и намерены подняться к своему рабочему месту, нажимайте 1. Если спешите

спуститься на обед со своего этажа, введите его номер. Следующее, о чем спро-

сит программа, это

В каком направлении будете двигаться (u/d):

Даем подсказку: если вы на первом этаже, вам, скорее всего, надо вверх. Если

на последнем — вниз. В качестве домашнего задания продумайте, куда можно

ехать с какого-то из средних этажей. Когда вы разберетесь с тем, где вы находи-

тесь и куда вам нужно, напротив соответствующего этажа появится треугольни-

чек, обращенный вершиной вверх или вниз в зависимости от направления дви-

жения лифта. По мере возникновения других запросов рядом с номерами этажей

будут появляться другие треугольнички.

Если лифт находится там же, где и вы, его двери немедленно откроются. Что

касается программы, то перед вашими глазами возникнет счастливое лицо офис-

ного работника, заходящего вовнутрь. В противном случае лифт начнет двигать-

ся вверх или вниз, пока не достигнет этажа, с которого был сделан запрос.

 

Ввод конечного пункта путешествия

Пока счастливый пассажир находится внутри лифта, нужно быстренько поинте-

ресоваться у него, куда это он собрался ехать:

Лифт 1 находится на зтаже 1.

Введите номера нужных этажей (0 для окончания ввода)

Этаж назначения 1: 13

Пассажир ввел 13. Но пока он размышлял, куда он хочет прокатиться, при-

шли еще пассажиры и стали нажимать разные кнопочки в лифте, всем ведь

нужно на разные этажи! Поэтому программа должна позволять ввести несколь-

ко номеров этажей. Введите несколько номеров (не больше 20 штук), нажмите 0

для окончания ввода.

Пункты назначения, указанные пассажирами, показываются в виде малень-

ких прямоугольничков слева от изображения лифта, напротив соответствующе-

го этажа. Каждый лифт имеет свой набор пунктов назначения (в отличие от за-

просов с исходных этажей, общих для всех лифтов).

Запросов с разных этажей можно делать сколько угодно. Программа запом-

нит их, как и выбранные из каждого лифта этажи назначения, и будет пытаться

обслужить всех. Все четыре лифта могут быть одновременно в движении. На

рис. 13.5 показана ситуация с несколькими запросами с этажей и несколькими

запросами пунктов назначения.

 

Рис. 13.5. Лифты в действии

 

20