29 std::vector<std::unique_ptr<Elevator>> elevators;
32 std::unique_ptr<FloorButtons> floorButtons;
41 std::unique_ptr<Queue> queue;
44 void FindAppearingPassengers();
47 void PressingFloorButtons();
57 bool isElevatorOnFloor(
size_t stage)
const;
60 mutable std::vector<std::string> passStatBuffer;
96 size_t capacityOfElevator);
122 elevators[elevatorNumber]->setDestination(destination);
132 elevators[elevatorNumber]->setIndicator(indicator);
142 return elevators[elevatorNumber]->getDestination();
152 return elevators[elevatorNumber]->getIndicator();
169 return elevators[elevatorNumber]->isDestinationAchieved(floorButtons->getUpButtons(), floorButtons->getDnButtons());
190 return elevators[elevatorNumber]->isEmptyAfterUnloading();
202 return elevators[elevatorNumber]->isEmpty();
214 return elevators[elevatorNumber]->isGoingUp();
226 return elevators[elevatorNumber]->isGoingDn();
240 return elevators[elevatorNumber]->isStaying();
252 return elevators[elevatorNumber]->isGoingUniformly();
264 return elevators[elevatorNumber]->isAccelerating();
276 return elevators[elevatorNumber]->isBreaking();
288 return elevators[elevatorNumber]->isDoorsOpening();
300 return elevators[elevatorNumber]->isDoorsClosing();
312 return elevators[elevatorNumber]->isDoorsOpened();
324 return elevators[elevatorNumber]->isStayingDoorsClosed();
334 return elevators[elevatorNumber]->getPosition();
343 return floorButtons->getUpButtons();
352 return floorButtons->getDnButtons();
362 return floorButtons->getUpButton(floor);
372 return floorButtons->getDnButton(floor);
382 floorButtons->unsetUpButton(floor);
392 floorButtons->unsetDnButton(floor);
402 return elevators[elevatorNumber]->getButtons();
413 return elevators[elevatorNumber]->getButton(floor);
469 void PrintStatistics(
bool passengersDetails,
const std::string& fname =
"")
const;
bool isElevatorDoorsOpening(size_t elevatorNumber) const
Проверка того, что у кабины лифта в данный момент открываются двери
bool getElevatorButton(size_t elevatorNumber, size_t floor) const
Функция запроса состояния конкретной кнопки в кабине лифта
const double veloUniform
Скорость равномерно движения лифта (в долях этажа)
const size_t timeLeaving
Время между выходами двух пассажиров в лифт
bool isElevatorBreaking(size_t elevatorNumber) const
Проверка того, что кабина лифта замедляется (тормозит)
const size_t numberOfFloors
Общее число этажей
void PrintPassengerState(const std::string &fname="") const
Функция печати в файл или на экран событий, произошедших с пассажирами за последний шаг (последнюю се...
bool isElevatorAchievedDestination(size_t elevatorNumber) const
Проверка того, что лифт завершил выполнение текущего назначения
ElevatorIndicator
Состояния лампочки (индикатора направления движения) кабины лифта
bool isElevatorGoingUp(size_t elevatorNumber) const
Проверка того, что кабина лифта движется вверх
void SetElevatorDestination(size_t elevatorNumber, size_t destination)
Функция задания назначения лифту
const std::vector< bool > & getFloorDnButtons() const
Функция запроса состояний кнопок "вниз" на этажах
bool isElevatorStaying(size_t elevatorNumber) const
Проверка того, что кабина лифта стоит (не движется)
void unsetUpButton(size_t floor)
Функция сброса (выключения) кнопки "вверх" на конкретном этаже
const size_t waitingTime
Время ожидания до закрытия дверей (если только кто-то не нажмет кнопку "ход" раньше) ...
double getElevatorPosition(size_t elevatorNumber) const
Функция запроса текущего положения лифта
bool isElevatorStayingDoorsClosed(size_t elevatorNumber) const
Проверка того, что у кабина лифта в данный момент стоит на этаже с закрытыми дверьми ...
void AddPassengerToQueue(const PassengerProperties &passProp_)
Функция добавления пассажира в очередь
const size_t timeOpening
Время открывания дверей
const size_t timeBreaking
Время торможения лифта
size_t getCurrentTime() const
Функция запроса текущего времени
bool isElevatorEmpty(size_t elevatorNumber) const
Проверка того, что кабина лифта пуста
const size_t numberOfElevators
Число лифтов
ElevatorIndicator getElevatorIndicator(size_t elevatorNumber) const
Функция запроса текущего состояния индикатора
bool isElevatorAccelerating(size_t elevatorNumber) const
Проверка того, что кабина лифта ускоряется (разгоняется)
const size_t timeAccelerating
Время разгона лифта
Заголовочный файл с описанием класса Elevator и сопутствующих структур
bool isElevatorEmptyAfterUnloading(size_t elevatorNumber) const
Проверка того, что лифт пустой после выхода очередного пассажира
bool isElevatorDoorsOpened(size_t elevatorNumber) const
Проверка того, что у кабины лифта в данный момент открыты двери
bool getFloorDnButton(size_t floor) const
Функция запроса состояния кнопки "вниз" на конкретном этаже
void unsetDnButton(size_t floor)
Функция сброса (выключения) кнопки "вниз" на конкретном этаже
bool isElevatorGoingDn(size_t elevatorNumber) const
Проверка того, что кабина лифта движется вниз
const std::vector< bool > & getFloorUpButtons() const
Функция запроса состояний кнопок "вверх" на этажах
const size_t timeClosing
Время закрывания дверей
void SetElevatorIndicator(size_t elevatorNumber, ElevatorIndicator indicator)
Функция задания состояния индикатора лифта (лампочка со стрелочкой, которую видят пассажиры) ...
const std::vector< bool > & getElevatorButtons(size_t elevatorNumber) const
Функция запроса состояний кнопок в кабине лифта
size_t getElevatorDestination(size_t elevatorNumber) const
Функция запроса текущего назначения
Основной класс — симулятор пассажирского лифта
void PrintElevatorState(size_t elevatorNumber, const std::string &fname="") const
Функция печати в файл или на экран состояния лифта в текущий момент времени
const size_t timeEntering
Время между входами двух пассажиров в лифт
Control(size_t numberOfFloors, size_t numberOfElevators, size_t capacityOfElevator)
Инициализирующий конструктор
Класс — очередь пассажиров
bool isElevatorDoorsClosing(size_t elevatorNumber) const
Проверка того, что у кабины лифта в данный момент закрываются двери
bool getFloorUpButton(size_t floor) const
Функция запроса состояния кнопки "вверх" на конкретном этаже
void PrintButtonsState(const std::string &fname="") const
Функция печати в файл или на экран состояния кнопок в кабинах и на этажах в текущий момент времени ...
bool isElevatorGoingUniformly(size_t elevatorNumber) const
Проверка того, что кабина лифта движется равномерно
void MakeStep()
Функция выполнения шага моделирования по времени
void PrintStatistics(bool passengersDetails, const std::string &fname="") const
Функция печати в файл или на экран итоговой статистики, включая итоговый "рейтинг" (чем меньше - тем ...
void ReadTimeTable(const std::string &fileName_)
Функция чтения расписания появления пассажиров на этажах