Клиенты поступают в магазин через интервал t, t -> W. Далее в течение времени tо они (клиенты) готовят заказ: tо -> G. Клиентов обслуживает 4 продавца, обслуживание 3-х фазное: - подготовительное время (tn), tn -> R; - время подбора товаров по заявке (tp) (зависит от размера заказа); - время выдачи заказа (tb), tb -> P. Размер заказа m является дискретной случайной величиной, заданной таблично; tp=m*t1, t1 -> U. ( W - распределение Вейбула, G- гамма - распределение, R - равномерное распределение, P - показательное распределение, U - U-распределение.)
Может кто нибудь подсказать хотя бы в каком направлении идти. Как правильно нужно создать алгоритм данной задачи?
volvo
22.01.2007 21:17
Здесь: моделирование работы банка похожее задание по моделированию решалось на С++, алгоритм подойдет для любого языка.
Нужна помощь в портировании на Паскаль - обращайся...
nany
22.01.2007 21:51
А как в паскале написать календарь событий состоит: код события и время когда оно произойдет и чтобы он был постоянно разным в зависимости от открытия магазина
Добавлено: Извини а как можно формировать очередь при 3 продавцах
volvo
22.01.2007 22:24
Цитата
как можно формировать очередь при 3 продавцах
Точно так же, как и в банке при трех кассирах... Очередь клиентов-то одна, а вот направляется тот, чья очередь подошла, к свободному (одному из трех) продавцу...
nany
23.01.2007 13:17
А как в паскале написать календарь событий состоит: код события и время когда оно произойдет и чтобы он был постоянно разным в зависимости от открытия магазина
for i:=0 To n do //код события (количество клиентов, кот. пришли в магазин ) Begin X[i]:=random; MX:=MX+X[i]; End;
А как сюда добавить время открытия магазина и время закрытия. Пример: и как вещественные числа преобразовать во время? n X[i] 1 9:30 2 15:30 3 21:50
volvo
23.01.2007 13:40
Ты программу, ссылку на которую я тебе дал, смотрела? Зачем тебе привязываться ко времени? Открывается магазин в 9:30 - прекрасно! Внутри магазина это время = 0 минут работы... 9:31 - отработали 1 минуту... Не надо все привязывать к какой-то глобальной системе отсчета, работай в своей, а КОГДА ПОНАДОБИТСЯ - ты по внутреннему времени магазина всегда сможешь определить текущее время в ЧЧ:ММ...
nany
23.01.2007 13:46
просто у меня по заданию дальше идет открытие магазина и закрытие его, а по ссылке я вроде бы там все поняла.Вот я и не знаю как эти числа преобразовать, как требует преподаватель
nany
29.01.2007 19:04
Помнишь ты мне давал ссылку на задачу моделирование банка, не мог бы ты мне помочь перевести ее на Паскаль, а то я этот С не очень хорошо понимаю, заранее спасибо))
volvo
29.01.2007 19:40
Ну, вот так, например:
Добавлено через 25 сек. Вроде, работает...
nany
30.01.2007 13:41
Спасибо тебе большое за помощь))))
nany
1.02.2007 22:59
Извини, пожалуйста. У меня почему то сортировка не работает в этом кусочке: var a:array[1..n] of double; k:integer; i:integer; changed:boolean; buf:double;
begin randomize(); for i:=1 to n do a[i] := random;
repeat changed:=FALSE; for k:=1 to n do if a[k] > a[k+1] then begin buf := a[k]; a[k] := a[k+1]; a[k+1] := buf; changed := TRUE; end; until not changed; end;
volvo
1.02.2007 23:18
Во-первых, как именно это связано с "Моделированием"? Во-вторых, почему без тегов? А в третьих - у тебя выход за пределы массива:
for k:=1 to n do if a[k] > a[k+1] then ... { <--- Здесь !!! Если K = n ... }
Сколько раз говорить, отлаживайте программы с ключом {$R+}, помогает находить ошибки...
nany
2.02.2007 8:17
for k:=1 to n-1 do if a[k] > a[k+1] then
Цитата
Сколько раз говорить, отлаживайте программы с ключом {$R+}, помогает находить ошибки...
- это как делать или где это можно посмотреть У меня почему то 2 раза повторяет: вот массив 2,1389853709164 1,25032955248215 а вот то что он отсортировал: 1,25032955248215 2,1389853709164 1,25032955248215 2,1389853709164 мне сортировка нужна для поиска медианы // ой извини я нашла это моя была ошибка
nany
3.02.2007 15:27
подскажите пожалуйста как можно придумать, если идут числа 2 7 1 3 мы их осортировали и получили: 1 2 3 7 И у нас есть ячейка, в котрую нужно записать место как они стояли в списке: Элемент Место 2 2 7 4 1 1 3 3
volvo
3.02.2007 15:33
Не сортировать сами элементы, а воспользоваться сортировкой по индексам... Посмотри на форуме, я где-до делал такое, если не найдешь - покажу, как...
Смысл в том, что заводится еще один целочисленный массив того же размера, что и исходный, изначально в него заносятся по порядку числа 1 .. N, а при сравнении и обмене элементов (в процессе сортировки) сами элементы остаются на своих местах, а все операции производятся именно ЧЕРЕЗ доп. массив...
nany
3.02.2007 16:45
я не могу найти по поиску
volvo
3.02.2007 18:17
Ты про это:
const n = 4; a: array[1 .. n] of integer = (2, 7, 1, 3);
var T_index, index: array[1 .. n] of integer;
buf: integer; i, k: integer; changed: boolean;
begin for i := 1 to n do begin index[i] := i; T_index[i] := i; end;
repeat changed := False; for k := 1 to n - 1 do
if a[index[k]] > a[index[k+1]] then begin buf := index[k]; index[k] := index[k+1]; index[k+1] := buf; changed := True; end;
until not changed;
{ А теперь индексируем сами индексы... } repeat changed := False; for k := 1 to n - 1 do
if index[T_index[k]] > index[T_index[k+1]] then begin buf := T_index[k]; T_index[k] := T_index[k+1]; T_index[k+1] := buf; changed := True; end;
until not changed;
for i := 1 to n do writeln(a[i]:6, ' #', T_index[i]);
end.
?
nany
3.02.2007 20:35
Да я про это, спасибо тебе большое -))
nany
6.02.2007 13:50
Извини, а как числа в массиве возводить в степень, power или нет?
volvo
6.02.2007 14:10
Ты точнее можешь выражаться? Какие числа, в каком массиве, какая степень? Надо ВЕСЬ массив возводить в эту степень, или только четные элементы? А может вообще только первый и последний? Я не телепат, в конце-то концов... Приводи исходные данные, и ЧТО ты хочешь получить...
nany
6.02.2007 14:15
извини, каждый элемент массива. например: массив 0,3434 0,2534 и получилось: 0,11792356 0,06421156 т.е. 0,3434^2=0,11792356 и т.д. sqr - это квадрат, а если в 3 степень это как
REkscess:=0; for i:=0 to IArEx-1 do REkscess:=REkscess+power(ATimeExist[i],4); for i:=0 to IArEx-1 do REkscess:=REkscess-4*RMat*power(ATimeExist[i],3); for i:=0 to IArEx-1 do REkscess:=REkscess+6*RMat*RMat*power(ATimeExist[i],2); t3:=REkscess;REkscess:=0; REkscess:=REkscess-3*power(RMat,4); t4:=REkscess; REkscess:=0; t5:=t3+t4; t6:=t5/power(RDisp,3); REkscess:=t6/1000;
Никаких предаоложений делать не могу - в стандартном Паскале нет функции Power, я не знаю, как она у тебя реализована, и будет ли то, что ты привела правильным... Картинку неплохо было бы и побольше сделать - показателей степени практически не видно...
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.