Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.05.2015, 13:03   #1
DikeeeY
Пользователь
 
Регистрация: 16.02.2015
Сообщений: 25
По умолчанию создание цикла или условия - СМО, две кассы. Реализация с помощью StringGrid

Здравствуйте помогите пожалуйста у меня задача вывести в стрингрид информацию по покупателям и как создать условие что у меня имеется 2 кассы я ввожу время время поступления покупателей и программа должна будет сортировать от времени покупателей по 2ум кассам если первая касса занята то он отправляет во вторую и так далее все выводить в таблицу помогите разобраться с условием не знаю как правильно записать его.
DikeeeY вне форума Ответить с цитированием
Старый 27.05.2015, 13:10   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

А каков критерий "занятости" кассы?
И если обе кассы расчитанны на одинаковые услуги, почему бы не сделать распределение поровну?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 27.05.2015, 13:22   #3
DikeeeY
Пользователь
 
Регистрация: 16.02.2015
Сообщений: 25
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
А каков критерий "занятости" кассы?
И если обе кассы расчитанны на одинаковые услуги, почему бы не сделать распределение поровну?
там на каждую кассу идет свое время обслуживания на каждого покупателя и время прихода и от этих значений нельзя сделать по ровну так как якобы если первая касса свободна то зачем покупатель пойдет во вторую кассу или же если она занята то ему придеть ожидать когда другая касса свободна и с клавиатуры вводятся значения занятости кассы поэтому по порядку будет уже не правильное выполнение условия задачи
DikeeeY вне форума Ответить с цитированием
Старый 27.05.2015, 13:37   #4
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,309
По умолчанию

Создать две очереди.
Поступил первый клиент.
Первого клиента в кассу, у которой более быстрое обслуживание. Если, например, это первая касса, то туда.
Поступил следующий клиент.
Считаем время на обслуживание клиентов уже находящихся в очереди.
Считаем время оставшееся на обслуживание уже обслуживаемых клиентов.
Вновь поступившего включаем в очередь, в которой он будет меньше стоять.

Добавить опционально:
Проверяем время работы кассы и если очередь на обслуживание превысила время наступления перерыва, то поступление в очередь закрыть.

Как-то так, ...
Как-то так, ...
ViktorR вне форума Ответить с цитированием
Старый 27.05.2015, 13:43   #5
DikeeeY
Пользователь
 
Регистрация: 16.02.2015
Сообщений: 25
По умолчанию

Цитата:
Сообщение от ViktorR Посмотреть сообщение
Создать две очереди.
Поступил первый клиент.
Первого клиента в кассу, у которой более быстрое обслуживание. Если, например, это первая касса, то туда.
Поступил следующий клиент.
Считаем время на обслуживание клиентов уже находящихся в очереди.
Считаем время оставшееся на обслуживание уже обслуживаемых клиентов.
Вновь поступившего включаем в очередь, в которой он будет меньше стоять.

Добавить опционально:
Проверяем время работы кассы и если очередь на обслуживание превысила время наступления перерыва, то поступление в очередь закрыть.

Как-то так, ...
ну вообще в очереди может быть максимум два человека это при условии что обе кассы заняты и человек поступает и ждет оставшееся время до окончания обслуживания предыдущего покупателя это все подразумеваеться в программе только вопрос в том как создать это условие кодом я не совсем понимаю как это сделать поэтому написал вам на форму просто не так давно начал что то пробовать программировать и не со всем ознакомился но в данной задачи мне нужно только само условие
DikeeeY вне форума Ответить с цитированием
Старый 27.05.2015, 14:08   #6
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Касса[1] Касса[2] .....

1)Считать Время прихода

2)проверить ВСЕ кассы на возможность обслуживания
=0 (касса будет свободна) (время ОКОНЧАНИЯ последнего обслуживания <время прихода)
=1 (время окончания ПРЕДпоследнего обслуживания<время прихода)
=2 (время окончания ПРЕД-ПРЕД-предпоследнего обслуживания <время прихода)
Цитата:
ну вообще в очереди может быть максимум два человека это при условии что обе кассы заняты
3) и выбрать "оптимальную"
ProvTime(Касса[x], testtime) (смотри пункт 2.)
=0 отлично (можно сразу начать обслуживание)
=1 нормально (придется подождать, но недолго)
=2 очень плохо (в очереди уже есть двое и клиент будет третьим)

4) "записать" клиента в выбранную кассу

5) если есть клиенты перейти к п.1 иначе закончить.
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 27.05.2015 в 14:15.
evg_m вне форума Ответить с цитированием
Старый 27.05.2015, 14:15   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
там на каждую кассу идет свое время обслуживания
А это курсовик? Просто имей ввиду что время обслуживания зависит от услуги заказанной клиентом и их количества. Если это курсовик, то не очень понятно откуда у тебя номиналы времени обслуживания, если это промышленная задача то никаких нормативов на время обслуживания быть не может по той простой причине, что это зависит от бешенного кол-ва факторов. Допустим касса дает длинный чек, или подкладной бланк печатается дольше. Или количество оттисков разное у каждой услуги и даже в рамках одной услуги но по разным критериям ее приема. Такие вещи как обслуживание клиентов не расчитывают по справочникам. Для этого есть системы https://ru.wikipedia.org/wiki/GPSS.

Очередь в кассу не может набираться систематически или регулироваться по времени одной услуги. Можно высчитать вероятность длительности на определенную услугу по статистике уже принятых услуг, но заранее знать сколько времени на это отведено будет не дано никому.

Поэтому может тебе стоит подробнее раскрыть задачу. Что-то тут не сростается...
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 27.05.2015, 14:42   #8
DikeeeY
Пользователь
 
Регистрация: 16.02.2015
Сообщений: 25
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
А это курсовик? Просто имей ввиду что время обслуживания зависит от услуги заказанной клиентом и их количества. Если это курсовик, то не очень понятно откуда у тебя номиналы времени обслуживания, если это промышленная задача то никаких нормативов на время обслуживания быть не может по той простой причине, что это зависит от бешенного кол-ва факторов. Допустим касса дает длинный чек, или подкладной бланк печатается дольше. Или количество оттисков разное у каждой услуги и даже в рамках одной услуги но по разным критериям ее приема. Такие вещи как обслуживание клиентов не расчитывают по справочникам. Для этого есть системы https://ru.wikipedia.org/wiki/GPSS.

Очередь в кассу не может набираться систематически или регулироваться по времени одной услуги. Можно высчитать вероятность длительности на определенную услугу по статистике уже принятых услуг, но заранее знать сколько времени на это отведено будет не дано никому.

Поэтому может тебе стоит подробнее раскрыть задачу. Что-то тут не сростается...
ну это вообще диплом задача является такой с клавиатуры вводиться интервалы между покупателями и время обслуживания покупателей на одной и на другой кассе и отталкиваясь от этих значений он начинает заполнять таблицу по кассам распределять по нажатию одной кнопки и получается в задаче складывается время поступления покупателя и время обслуживания и вышедшее значение это время окончания обслуживания покупателя и отталкиваясь от времени окончания и интервалами между поступлением покупателей программа должна распеределить покупателей между кассами
Код:
procedure TForm1.btn1Click(Sender: TObject);
var a,a1,a2,b,b1,b2:Real;

begin
a:=StrToFloat(edt1.text);
a2:=StrToFloat(edt11.text);
StrnGrd1.Cells[1,1]:=FloatTostr (a2);
StrnGrd1.Cells[1,3]:=FloatToStr (a);
a1:=a+a2;
StrnGrd1.Cells[1,4]:=FloatToStr (a1);
//ÂÒÎÐÎÉ
b:=StrToFloat(edt2.text);
b2:=StrToFloat(edt12.text);
StrnGrd1.Cells[2,1]:=FloatToStr (b2);
b1:=a+b;
if a1>b2 then
begin
StrnGrd1.Cells[2,5]:=FloatToStr (b);
StrnGrd1.Cells[2,6]:=FloatToStr (b1);
end
else
begin
StrnGrd1.Cells[2,3]:=FloatToStr (b);
StrnGrd1.Cells[2,4]:=FloatToStr (b1);
end;
end;
ладно спасибо я разобрался как сделать вот если что кому нужно

Последний раз редактировалось Stilet; 27.05.2015 в 15:42.
DikeeeY вне форума Ответить с цитированием
Старый 27.05.2015, 15:50   #9
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
ну это вообще диплом
ХА! Сам Аполлон велел делать моделирование на основе вероятностей )
Я бы на твоем месте сделал следующее:
1) Завел бы справочник, в котором указал список услуг касс и их планируемое время выполнения в нормальных условиях + допуск
2) Каждый клиент, который попадает в очередь приходит со случайной услугой (допустим ее номер генерируется рандомно).
3) Очередь пополняется тоже рандомно по времени и кол-ву клиентов. т.е. к примеру таймер с рандомным интервалом, а по его срабатыванию в очередь попадает рандомное кол-во клиентов с рандомным списком услуг
4) Когда клиент попадает на вершину очереди ему на каждую услугу задается тоже рандомно допуск к нормативному времени услуги в рамках допуска из справочника.

Ну и два потока - один эмулирует первую очередь с ожиданием. которое задано клиенту на вершине, второй - вторую.

Вот это будет действительно красивый диплом, и более того я не зря дал выше ссылку. Плановики и аналитики именно так расчитывают загруженность одного рабочего места оператора )
Уж поверь, я с этим уж 4 года работаю.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 27.05.2015, 22:52   #10
DikeeeY
Пользователь
 
Регистрация: 16.02.2015
Сообщений: 25
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
ХА! Сам Аполлон велел делать моделирование на основе вероятностей )
Я бы на твоем месте сделал следующее:
1) Завел бы справочник, в котором указал список услуг касс и их планируемое время выполнения в нормальных условиях + допуск
2) Каждый клиент, который попадает в очередь приходит со случайной услугой (допустим ее номер генерируется рандомно).
3) Очередь пополняется тоже рандомно по времени и кол-ву клиентов. т.е. к примеру таймер с рандомным интервалом, а по его срабатыванию в очередь попадает рандомное кол-во клиентов с рандомным списком услуг
4) Когда клиент попадает на вершину очереди ему на каждую услугу задается тоже рандомно допуск к нормативному времени услуги в рамках допуска из справочника.

Ну и два потока - один эмулирует первую очередь с ожиданием. которое задано клиенту на вершине, второй - вторую.

Вот это будет действительно красивый диплом, и более того я не зря дал выше ссылку. Плановики и аналитики именно так расчитывают загруженность одного рабочего места оператора )
Уж поверь, я с этим уж 4 года работаю.
можно было бы мудрить с ним но у меня конкретная цель и рамки этой цели все должно вводиться с клавиатуры так как тема эта из "Моделирования" и там есть задача котрая просто письменно решается имитационная работа двух касс называется а в ней интервалы между покупателями вводятся с клавиатуры и время обработки каждого покупателя так же и вот у меня есть контрольный пример по которому я должен буду проверятть программу на годность тут все куда проще просто знания программирования не позволяют размахнутся и за раз без всяких обращений сесть и сделать ее так как сама программа не является столь трудной
DikeeeY вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Реализация условия Parallelogram PHP 3 11.08.2014 20:06
Реализация сложного условия sql atenon SQL, базы данных 2 05.08.2012 20:20
Работа с циклами в Delphi 7. Выйти из цикла достигнув указанного условия. CONDOR* Помощь студентам 1 16.05.2012 18:59
связать две программки в одну с использованием условия. 13xXx13 Помощь студентам 1 15.12.2010 16:51
Си. Две задачи на опер. цикла и условия. Albi Помощь студентам 6 10.10.2010 14:22