![]() |
elevator
0.7
Симулятор пассажирского лифта
|
Основной файл программы elevator. Подробнее...
Классы | |
struct | myParams |
Структура, содержащая пользовательские параметры Подробнее... | |
Функции | |
void | CONTROLSYSTEM (Control &control, myParams ¶ms) |
Основная функция системы управления Подробнее... | |
int | main (int argc, char **argv) |
Переменные | |
const size_t | numberOfElevators = 2 |
Число лифтов Подробнее... | |
const size_t | elevatorCapacity = 8 |
const size_t | maxFloor = 11 |
const size_t | numberOfFloors = maxFloor + 1 |
Общее число этажей Подробнее... | |
const size_t | maxTime = 26000 |
Основная функция системы управления
Именно эту функцию нужно модифицировав, реализовав здесь оптимизированный алгорим работы пассажирского лифта.
Другие функции "трогать" запрещается.
Данная функция вызывается на каждом шаге (каждую секунду) работы лифта.
Внутри можно пользоваться структурой params, сохраняя в нее при необходимости нужные сведения, которые, соответственно, будут доступны при следующем вызове функции CONTROLSYSTEM
Cобственно, для активного управления лифтами есть всего две команды:
Прежде, чем отдавать команду лифту по итогам анализа его текущего состояния - надо решить, имеет ли смысл делать это прямо сейчас
К примеру, если лифт едет куда-то на вызов (скажем, на 10-й этаж), и в этот момент кто-то в подвале (0-й этаж) нажал на кнопку вызова, то если поступить формально и в этот момент изменить назначение лифта путем исполнения команды
то он затормозит по пути (возможно, даже между этажами), и потом начнет разгоняться и поедет в обратном направлении (вниз); если лифт прибыл на этаж, начал тормозить, и в этот момент ему установить новое назначение, то он затормозит, двери не откроет, и тут же поедет по новому назначению!
Будьте аккуратны. Наш лифт очень "исполнительный"!
Поэтому нужно тщательно обдумывать, в какой момент отдавать команду на изменение направления и в какой команд отдавать команду на изменение индикатора
(пассажиры садятся только в тот лифт, который едет в нужную им сторону, судя по индикатору, который они видят, хотя иногда попадаются и те, кто садятся не туда, при этом зайдя в лифт, они "жмут" кнопку, куда надо им — это тоже надо как-то обрабатывать!!!)
[in,out] | control | ссылка на основной класс-симулятор лифта |
[in,out] | params | ссылка на набор пользовательских параметров |
См. определение в файле main.cpp строка 194
int main | ( | int | argc, |
char ** | argv | ||
) |
См. определение в файле main.cpp строка 120
const size_t elevatorCapacity = 8 |
const size_t maxFloor = 11 |
const size_t maxTime = 26000 |