18 : buttons(numberOfFloors, false)
19 , capacity(maxCapacity)
21 , timeToSelfProgramme(0)
32 void Elevator::setDestination(
size_t i)
36 if ((i < 0) || (i >= buttons.size()))
37 throw std::exception(
"incorrect floor");
41 std::cout <<
"Exception: incorrect floor = " << i << std::endl;
51 this->indicator = indicator;
55 bool Elevator::isGoingButtonPressed()
const 57 for (
auto& p : passengers)
58 if (p.PerformNoWaitingProbability())
64 std::string Elevator::getStateString()
const 68 std::string strStatus;
82 std::string strIndicator;
86 strIndicator =
"up, ";
89 strIndicator =
"down,";
92 strIndicator =
"both,";
100 strAccel =
"acceler.,";
103 strAccel =
"breaking,";
106 strAccel =
"uniform, ";
110 std::string strDoors;
114 strDoors =
"unloading...";
117 strDoors =
"loading... ";
120 strDoors =
"opening... ";
123 strDoors =
"closing... ";
126 strDoors =
"closed ";
129 strDoors =
"waiting... ";
133 strState +=
"level = ";
134 strState += std::to_string(position / 100);
136 if ((position % 100) < 10)
138 strState += std::to_string(position % 100);
140 strState +=
", dir. = ";
141 strState += strStatus.c_str();
143 strState +=
" ind. = ";
144 strState += strIndicator.c_str();
146 strState +=
" acceler. = ";
147 strState += strAccel.c_str();
148 strState +=
" doors = ";
149 strState += strDoors.c_str();
151 strState +=
" (pass.: ";
152 for (
auto& p : passengers)
154 strState += std::to_string(p.id);
163 bool Elevator::isDestinationAchieved(
const std::vector<bool>& upButtons,
const std::vector<bool>& dnButtons)
const 165 bool b1 = ((position / 100 == destinationFloor) && (position % 100 == 0));
168 bool b4 = ((status ==
ElevatorStatus::staying) && (isEmpty()) && (!upButtons[position / 100] && !dnButtons[position / 100]));
170 return (b1 && (b2 || b3 || b4));
стрелочки в обоих направлениях
const size_t numberOfFloors
Общее число этажей
ElevatorIndicator
Состояния лампочки (индикатора направления движения) кабины лифта
ElevatorDoorsStatus
Состояние дверей кабины лифта (не может быть использовано напрямую в системе управления, внутренний параметр)
движется равномерно или стоит
Заголовочный файл с описанием класса Elevator и сопутствующих структур
открыты (идет посадка пассажиров)
открыты (лифт ожидает отправления)
открыты (идет высадка пассажиров)
Elevator(size_t numberOfFloors, size_t maxCapacity, size_t id)
Инициализирующий конструктор
ElevatorAcceleration
Ускорение лифта (не может быть использовано напрямую в системе управления, внутренний параметр) ...