y"> delete p;// видалення пацієнта
reject1 + +;
return;
}
// Вільних місць немає, початкова оцінка не перевищує 41 бал
ptr = ill;
for (i = 0; i
// достроково виписати
{
if (ptr-> Data () -> current_mark> = border2)// пацієнт знайдений
{
departure (ptr);// виписка
ListNode * lp = new ListNode (p, NULL);// створення нового
// елемента списку
ListAdd (ill, lp);// додавання нового елемента в список
current_number + +;
entered + +;
return;
}
}
delete p;// прийняти пацієнта в палату
// не вдалося, видаляємо об'єкт
reject2 + +;
return;
} Palata :: departure (ListNode * pac) {
int sojourn_val;
// виписуємо хворий одужав
if (pac-> Data () -> current_mark> healthy) complete + +;
// Дострокова виписка
else if (pac-> Data () -> current_mark> = border2) earlier + +;
sojourn_val = pac-> Data () -> days_in_hosp;
// Записуємо в файл число днів, яке виписаний хворий провів
// в палаті
fprintf (sojourn, "% d n", sojourn_val);
// Перераховуємо середній час перебування в палаті
ill_aver = ill_aver * (1-1.0/(complete + earlier)) +1.0 * sojourn_val/(complete + earlier);
current_number -;
// Видаляємо елемент зі списку
ill = ListDelete (ill, pac);
return;
}
Пояснимо логіку вирази з метола Pacient :: change mark () проведенням його покрокової трасування. Нагадаємо, що нам необхідно згенерувати число з одним знаком після коми, що знаходиться в межах відрізка [-0,2; 1,2]. Основ-ная трудність полягає в тому, що функція rand () працює тільки з цілими числами. p align="justify"> 1. Обчислюємо значення 10 * (top-bottom) = 14.0.
2. Наводимо результат до цілого типу. Приведення не змінить фактичного значення виразу, так як число з k знаками після коми після множення на 10 * стає цілим.
3. Додаємо одиницю, щоб отримати загальну кількість всіх мож...