![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| sgrey |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 265 Регистрация: 15.4.2006 Репутация: нет Всего: 4 |
Писал я прогу, и взял из книжки приёмчик один. Суть проги такая - она считает среднее время ожидания клиента в очереди в банке. Оперции:
1) Постатистическим данным из файла читается время прибытия и заносится в лист событий, время ожидания и время непосредственно которое кассир делал что там нужно с клиентом - это хранится в пямяти. 2) Во время прибытия клиента смотрится есть ли кто-то в очереди и занят ли кассир. 3) Если Кассир свободен - считается время когда клиент уедет и записывается в лист событый. 4) Если кассир несвбоден - человек заносится в очередь 5) таким образом решаются все остальные клиенты до конца дня. Вопрос как раз при проверке. В коде когда первый клиент заходит в банк, то стоит проверка очереди. Мне кажется что это только для первого клиента, потому как для следующих это уже всегда будет ложно, но препод сказал что это для всех и вроде как работает всё время... вобщем вод код, я обозначил это место с вопросом. Это только исполняемый скрипт, к нему ещё 2 класса описаны и файл с данными. если надо могу дать весь архив. Объяснил коряво, что непонятно - спрашивайте
|
|||
|
||||
| Pilligrim |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 65 Регистрация: 9.6.2006 Репутация: 1 Всего: 1 |
А я думаю, что когда заходит первый клиент проверку на очередь не надо, т.к. он - первый, и соответственно очереди быть не может. А потом, для следующих клиентов, проверка нужна,т.к. она не всегда будет сообщать, что очередь есть, ведь он может зайти к вечеру, когда очереди уже нет.
|
|||
|
||||
| sgrey |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 265 Регистрация: 15.4.2006 Репутация: нет Всего: 4 |
Pilligrim, прога просто читает данные из файла и не знает первый он или не первый, поэтому ей нужно указать. вопрос в том - работает ли эта проверка для последующих клиентов, или она только первого проверяет? мне кажется только первого
|
|||
|
||||
| ptr |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 661 Регистрация: 31.5.2006 Где: Новосибирск Репутация: 1 Всего: 14 |
sgrey, что-то я не понял вопроса. Если у тебя выполнится условие if (event.eventType == arrive), то в любом случае будет произведена проверка на пустоту очереди.
А если очередь полностью освободится? Это сообщение отредактировал(а) ptr - 14.8.2006, 10:52 -------------------- Единственный способ определить границы возможного - это выйти за эти границы, в невозможное. Артур Кларк. |
|||
|
||||
| MAKCim |
|
||||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 52 Всего: 207 |
а зачем в этой задаче вообще очередь использовать
ради интереса набрал решение (если правильно понял условие)
для файла
выдает totaltime=97 custumers=9 averagetime=10.7778 Это сообщение отредактировал(а) MAKCim - 14.8.2006, 10:50 -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
||||
|
|||||
| sgrey |
|
||||||||||||||||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 265 Регистрация: 15.4.2006 Репутация: нет Всего: 4 |
потому что по заданию надо было использовать очередь )
если она осводится полностью, но в файле останутся клиенты, то прога запишет событие прибытия в лист событий и в нужное время процесс пойдёт опять до тех пор пока в файле не останется записей
это проверка события - если событием является прибытие, то идёт проверка на время. Если это время - сейчас, то проверяется есть ли очередь. Если очереди нет - сразу начинается работа банкира с клиентом, если есть - он становится последним в очередь. Также для него создаётся время ухода из банка. а если подробно всё описать, то вот лист событий в файле
когда программа запускается, она генерирует следующий лист
псевдокод событий
псевдокод прихода
Обработка ухода псевдокод
вобщем получается что мы вополняем всю проверку когда клиент уходит, и когда в конце остаются только события ухода - то программа даже не заходит в первый блок. поэтому проверка вначале она только для первого клиента... но мне утверждают обратное ) вот ссылка на архив со всей прогой и файлом событий написана на VC6. Там структура листа и очереди понятна будет думаю и логика самой программы) http://rapidshare.de/files/29552379/bank.zip Добавлено @ 03:53 попробую ещё конкретизировать вопрос - там где применяется atFront, она работает только при первом цикле, или же она нужна до конца работы программы?
|
||||||||||||||||||
|
|||||||||||||||||||
| ptr |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 661 Регистрация: 31.5.2006 Где: Новосибирск Репутация: 1 Всего: 14 |
Вот так и надо было задавать вопрос. Как я понял у тебя line может очищаться и может возникнуть ситуация, когда она будет пуста, тогда данную проверку надо делать (я правда не понял смысла проверки). Совет на будущее. Не стоит делать длинных функций, т.к. это ухудшает понимание кода. -------------------- Единственный способ определить границы возможного - это выйти за эти границы, в невозможное. Артур Кларк. |
|||
|
||||
| sgrey |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 265 Регистрация: 15.4.2006 Репутация: нет Всего: 4 |
ну не смог с самого начала сформулировать грамотно спасибо ) теперь понятно ) |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |