аказаto_check;// час до наступної проверкіq_length;// поточна довжина очередіexist;// поточну кількість товару < ; Client> * queue;// чергу очікують заявок
// Опис незмінних полів даннихstatic int mu = 3; static int checking = 28; static int ordering = 21; static int level1 = 18; static int level2 = 72; static int percentage = 80;: (int i); run (); arrival (); complete (); check (); Print (); getLength (); q_extra;// змінна для зберігання початкової довжини черги
};
// Метод-конструктор. Параметр - вихідна кількість товару :: SuperMarket (int i)
{_length = 0; _extra = 0; = NULL; _arrival = (int) (get_exp ((float) mu/100));
// "Насильно" встановлюємо експонентну випадкову величину
// в одиницю, якщо після округлення до цілого вона звернулася в нуль.
// Ймовірність такої ситуації тим менше, ніж з великим коефіцієнтом
// промасштабіровано час. У даному випадку вона дорівнює
// 1-exp (-0.03 * 0.5) = 0,015. (to_arrival == 0) to_arrival = 1; _order = -1; = 0; = i;
// Час до найближчої перевірки встановлюється випадковим образом_check = (rand ()% checking +1) * 24;
}
SuperMarket :: getLength ()
{(q_length);
} SuperMarket :: Print ()
{("Наступна заявка надійде через% d годин n", to_arrival); (to_order> 0) {("Замовлення прибуде через% d днів, він становить% d одиниць товару n" ;, to_order/24, order);
} ("Замовлення немає n"); ("Наступна перевірка запасів відбудеться через% d днів n", to_check/24); ("Чекають задоволення запиту% d клієнтів n" ;, q_length); ("Мається% d одиниць товару n", exist);
}
// Моделювання прибуття нового запросаSuperMarket :: arrival ()
{
// int i; * p = NULL;
// Розігруємо новий інтервал між прібитіямі_arrival = (int) (get_exp ((float) mu/100)); (to_arrival == 0) to_arrival = 1; + +;// інкремент загального лічильника запитів (exist> 0)// товар є
{-;// декремент кількості товару + +;// інкремент лічильника відразу задоволених
// запитів
}// товару немає
{(rand ()% 100
{+ +;// інкремент лічильника втрачених клієнтів;
}
// Створюємо новий об'єкт класу Client і новий елемент списку = new Client (); * ptr = new ListNode (p, NULL);
// Черги немає. Новий елемент стає головою списку (q_length == 0) queue = ptr;
// Додаємо нов...