ий елемент у хвіст спіскаListAdd (queue, ptr); _length + +;// інкремент довжини черги
};
}
// Імітація прибуття заказаSuperMarket :: complete ()
{mi, i, b, c; _order = -1; + = order; = 0; (q_length == 0) return;
// Визначаємо, скільки одиниць товару буде продано негайно (exist
{
// Відпускаємо товар клієнту, що знаходиться в голові списку = queue-> Data () -> getTime ();
// Час очікування записуємо у файл (у днях) (sojourn, "% .2 f n", ((float) b)/24);
// Визначаємо, яким за рахунком з покинули чергу з моменту початку
// моделювання є цей клієнт. Враховується початкова довжина черги. = Entered-rejected-satisfied-q_length + q_extra +1; _ave = soj_ave * (1-1.0/c) + (float) b/c;// перерахунок середнього часу
// очікування
// Видаляємо елемент з голови списку * ptr = queue; = queue-> Next (); ptr; _length -;// декремент довжини черги-;// декремент кількості товару
}
}
// Імітація перевірки стану запасаSuperMarket :: check ()
{a; _check = checking * 24;
// Обчислення поточного стану запасу = exist + order-q_length; (a> = level1) return;// замовлення робити не потрібно
// Замовлення робити нужно_order = ordering * 24;
// обчислення обсягу замовлення = level2-a; _orders + +;// інкремент кількості замовлень
}
// Метод-діспетчерSuperMarket :: run ()
{
// int i;
// float a; * ptr; _arrival -; (to_arrival == 0) arrival (); (to_order> 0) to_order -; (to_order == 0) complete (); _check -; (to_check == 0) check ();
// Інкремент поточного часу перебування для всіх клієнтів, які очікують// виконання замовлення (queue! = NULL)
{= queue; (ptr! = NULL)
{
((ptr-> Data ()) -> hours) + +; = ptr-> Next ();
}
}
// Щотижнева запис у файл поточної довжини черги (total% 7 == 0) fprintf (que, "% d n", q_length);
// Перерахунок середньої довжини очереді_ave = que_ave * (1-1.0/(total +1)) + ((float) q_length)/(total +1);;
}
Лістинг програми файл random.h
# include
# include
# include get_exp (float mu)// генератор випадкових чисел, розподілених
...