/p>
}
} while (buf == false);
init_graph ();
grow (get_h ());
}
В· void work ()
Функція здійснює роботу ліфта в залежності від глобальної налаштування і вхідних даних. Приклад реалізації функції наведено нижче:
void car_lift :: work ()
{
int first;
int last;
int sum = 0;
int i_number;
int j;
bool over_l = false;
grow (get_h ());
do
{
sum = 0;
if (get_wload () == 0)// вантажу в ліфті немає
{
j = 0;
while ((cargo [j]. get_out () == false) && (j
first = cargo [j]. get_first ();
last = cargo [j]. get_last ();
entry (cargo [j]);
}
if (over_l == false)
{
for (int i = 0; i
{
if ((cargo [i]. get_out () == true) && (cargo [i]. get_first () == first))
entry (cargo [i]);
}
}
if (last> first)// рух на підйом
{
if (get_stop () == true)
{
for (int i = 0; i
{
if ((cargo [i]. get_in () == true) && (cargo [i]. get_last ()
(cargo [i]. get_last ()> first))
last = cargo [i]. get_last ();
if ((cargo [i]. get_out () == true) && (cargo [i]. get_first ()
(cargo [i]. get_first ()> first))
last = cargo [i]. get_first ();
}
}
if (get_wload ()> get_weight ())// перевірка на перевантаження
{
overl (first);
over_l = true;
}
else
{
first = up (first, last) ;//підйом
over_l = false;
}
}
else// рух на спуск
{
if (get_stop () == true)
{
for (int i = 0; i
{
if ((cargo [i]. get_in () == true) && ((cargo [i]. get_last ()> last) &&
(cargo [i]. get_last ()
last = cargo [i]. get_last ();
if ((cargo [i]. get_out () == true) && ((cargo [i]. get_first ()> last) &&
(cargo [i]. get_first ()
last = cargo [i]. get_first ();
}
}
if (get_wload ()> get_weight ())// перевірка на перевантаження
{
overl (first);
over_l = true;
}
else
{
first = down (first, last) ;//спуск
over_l = false;
}
}
for (int i = 0; i
{
if ((cargo [i]. get_in () == true) && (cargo [i]. get_last () == first))
{
out (cargo [i]);
}
}
if (over_l == false)
{
for (i = 0; i
{
if ((cargo [i]. get_out () == true) && (cargo [i]. get_first () == first))
{
entry (cargo [i]);
}
}
}
j = 0;
while ((cargo [j]. get_in () == false) && (j
last = cargo [j]. get_last () ;//визначення наступного поверху,
// якщо в ліфті є вантаж
for (i = 0; i
if ((cargo [i]. get_out () == true) | | (cargo [i]. get_in () == true)) sum + +;
if ((get_wload () == 0) && (sum> 0))// визначення руху,
// якщо в ліфті немає вантажу
{
j = 0;
while ((cargo [j]. get_out () == false) && (j
last = cargo [j]. get_first ();
if (last> first) up (first, last);
else down (first, last);
}
} while (sum> 0) ;//поки є виклики
delay (2000);
outtextxy (25,70, "Робота завершена! Натисніть 'Enter' ");
}
У даній реалізації функція визначає порядок обслуговування викликів в Залежно від глобальної налаштування ліфта і вхідних даних. Робота ліфта задається циклом з операціями в наступному порядку:
1. задається напрямок руху ліфта;
2. перевіряється наявність викликів на даному поверсі;
3. перевіряється, чи є вантаж, для якого цей поверх кінцевий;
4. перевіряється наявність викликів на проміжних поверхах;
5. перевіряється перевищення вантажопідйомності;
6. здійснюється рух.
Цикл виконується до тих пір, поки не будуть обслужені всі виклики. br/>
3.3 Інструкція програмісту
При написанні класу В«вантажний ліфтВ» були використані наступні класи:
В· клас В«ВантажВ», що описує основні функції об'єкта В«вантаж для перевезенняВ». Цей клас використовується для створення масиву викликів для вантажного ліфта;
В· клас В«ЛіфтВ», що описує основну функціональність ліфта. Цей клас успадковується класом В«вантажний ліфтВ» з додаванням членів-даних і членів функцій.
...