; i -)
{
setcolor (15);
itoa (i, num, 10);
outtextxy (x +6,15, num);
if (i
{
setcolor (8);
itoa (i +1, num, 10);
outtextxy (x +31,15, num);
}
x-= 25;
delay (2000);
}
setcolor (15);
rectangle (5,40,150,60);
setcolor (15);
outtextxy (25,47, "Двері відкриті!");
return b;
}
Функція ідентична функції підйому ліфта.
В· void turning ()
Функція використовується для введення даних необхідних для роботи ліфта. Приклад реалізації функції наведено нижче:
void car_lift :: turning ()
{
float f_number = 0;
int i_number = 0;
cout <<"Введення необхідних даних! "<
cout <<"Введіть кількість людина, що очікують ліфт: ";
cin>> i_number;
put_load (i_number);
for (int i = 0; i
{
cout <
do
{
cout <<"Початковий поверх:";
cin>> i_number;
if ((i_number <= 0) | | (i_number> get_h ()))
cout <<"У цьому будинку немає такого поверху! "<
} while ((i_number <= 0) | | (i_number> get_h ()));
cargo [i]. put_first (i_number),
do
{
cout <<"Кінцевий поверх:";
cin>> i_number;
if ((i_number <= 0) | | (i_number> get_h ()))
cout <<"У цьому будинку немає такого поверху! "<
if (i_number == cargo [i]. get_first ())
cout <<"Цьому вантажу не треба нікуди їхати! "<
} while ((i_number <= 0) | | (i_number> get_h ()) | | (i_number == cargo [i]. get_first ()));
cargo [i]. put_last (i_number);
do
{
cout <<"Вага вантажу (кг): "; p> cin>> f_number;
if (f_number <0)
cout <<"Вага повинна бути позитивним! "<
if (f_number> get_weight ()-cargo [i]. get_pweight ())
cout <<"Ліфт не зможе підняти цей вантаж! "<
} while ((f_number <= 0) | | (f_number> get_weight ()-cargo [i]. get_pweight ()));
cargo [i]. put_load (f_number);
}
}
У даній реалізації проводиться перевірка вводятьсязначень, щоб уникнути некоректних даних. Наприклад, що задаються поверхи повинні бути в діапазоні від 1 до останнього в даному будинку, початковий і кінцевий поверхи не повинні збігатися, вага супроводжуваного вантажу повинен бути більше нульового і сумарна вага вантажу і супроводжуючого його людини не повинен бути більше вантажопідйомності ліфта.
В· void entry (load & L)
Функція здійснює зміну членів даних класу у зв'язку з входом пасажира в ліфт. Приклад реалізації функції наведено нижче:
void car_lift :: entry (load & l)
{
l.put_in (true),
l.put_out (false);
put_wload (get_wload () + l.get_pweight () + l.get_load ());
}
У даній реалізації функція записує значення В«істинаВ» в полі, визначальне знаходження даного вантажу в ліфті і значення В«брехняВ» - у полі, визначальне знаходження даного вантажу поза ліфта. У поле, що визначає вага вантажу і пасажира в ліфті, функція підсумовує попередній вага, вага увійшов пасажира і супроводжуваного вантажу.
В· void out (load & l)
Функція здійснює зміну членів даних класу у зв'язку з виходом пасажира з ліфта. Приклад реалізації функції наведено нижче:
void car_lift :: out (load & l)
{
l.put_in (false);
l.put_out (false);
put_wload (get_wload ()-l.get_pweight ()-l.get_load ());
}
У даній реалізації функція записує значення В«брехняВ» в полі, визначальне знаходження даного вантажу в ліфті і значення В«брехняВ» - у полі, визначальне знаходження даного вантажу поза ліфта. У поле, що визначає вага вантажу і пасажира в ліфті, функція записує значення, отримане при вирахуванні з попереднього ваги вага вийшов пасажира і супроводжуваного вантажу.
В· void overl (int floor)
Функція здійснює зміну членів-даних класу у зв'язку з тимчасовим виходом пасажира з ліфта через перевантаження. Приклад реалізації функції наведено нижче:
void car_lift :: overl (int floor)
{
grow_overl ();
closegraph ();
int i_number;
bool buf = true;
cout <<"Перевантаження! Одна людина має вийти! "<
do
{
cout <<"Введіть номер пасажира, який вийде "<
cin>> i_number;
buf = cargo [i_number-1]. get_in ();
if (cargo [i_number-1]. get_in () == false) cout <<"Такого пасажира в ліфті немає!" <
else
{
cargo [i_number-1]. put_in (false);
cargo [i_number-1]. put_out (true);
cargo [i_number-1]. put_first (floor);
put_wload (get_wload ()-cargo [i_number-1]. get_pweight ()-cargo [i_number1]. get_load ()); <...