Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.89/19: Рейтинг темы: голосов - 19, средняя оценка - 4.89
xuston2010
2 / 2 / 0
Регистрация: 16.10.2010
Сообщений: 30
#1

Как создать приоритетную очередь?

20.10.2010, 15:31. Просмотров 3767. Ответов 3
Метки нет (Все метки)

Пусть имеется обслуживающая система из n обслуживающих аппара-тов. Работа этой системы разбита на такты. В течение одного такта мо-жет одна заявка стать в очередь и одна заявка приступить к обслужива-нию, (разумеется, если аппарат свободен). Вероятность заявки поступить на обслуживание Р(A), вероятность обслужить заявку P(B), вероятность заявки покинуть очередь после Т тактов Р(С). После каждых L тактов давать информацию о длине очереди и число тактов, в течении которых обслуживающий аппарат простаивал. Реализовать обслуживающую систему c неограниченной очередью.

L=30, после окончания работы системы выдать информацию, сколько заявок обслуживалось 2 или 3 такта.

как это сделать?

Добавлено через 1 минуту
????????

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.10.2010, 15:31
Ответы с готовыми решениями:

Почти готовое решение.Как создать очередь?
Добрый день.Подскажите,можно ли исправить готовый год?Что не так,объясните...

Создать очередь. Добавить элемент в очередь. Удалить элемент из очереди
Нужно создать очередь. Добавить элемент в очередь. Удалить элемент из очереди. ...

Создать очередь
Создать очередь, информационные поля которой содержат числа из текстового...

Создать однонаправленную очередь
Всем привет! люди добрые помогите создать однонаправленную очередь с числами из...

Создать объект очередь в C++!
помогите чайнику разобраться! Создать объект - очередь с перегруженными...

3
fasked
Эксперт С++
4978 / 2557 / 241
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
20.10.2010, 17:30 #2
обычная очередь, только элементы добавляются по приоритету.
то есть элементом очереди должна быть пара { задача, приоритет }.
при добавлении нового элемента происходит автоматическая сортировка по приоритету.
1
xuston2010
2 / 2 / 0
Регистрация: 16.10.2010
Сообщений: 30
20.10.2010, 17:42  [ТС] #3
А точнее можете подсказать, в теории я понимаю, а вот с кодом проблемы
0
fasked
Эксперт С++
4978 / 2557 / 241
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
20.10.2010, 19:00 #4
Цитата Сообщение от xuston2010 Посмотреть сообщение
А точнее можете подсказать, в теории я понимаю, а вот с кодом проблемы
Ну вообще реализация приоритетной очереди есть в STL. Можете посмотреть исходники, если хотите написать собственный вариант, взять за основу.
Для вашей задачи вполне можно использовать.

Примерно так. Делаете класс "задача", у которая в данных имеется поле "приоритет" - его то и используете в качестве сортирующего параметра.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
class event
{
    public:
        event(int event_priority, const std::string &event_name) : priority(event_priority), name(event_name) {
        }
        
        void run() {
            std::cout << "event " << name << "(" << priority << ")" << " running" << std::endl;
        }
 
        int get_priority() const {
            return priority;
        }
 
    private:
        int priority;
        std::string name;
};
Далее создаете функтор-компаратор примерно такого вида
C++
1
2
3
4
5
6
7
class event_comparison
{
    public:
        bool operator() (const event &lhs, const event &rhs) const {
            return (lhs.get_priority() < rhs.get_priority());
        }
};
создаете и используете приоритетную очередь:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
int main()
{
    std::priority_queue<event, std::vector<event>, event_comparison> event_queue;
    
    event_queue.push(event(10, "event 1"));
    event_queue.push(event(4, "event 2"));
    event_queue.push(event(7, "event 3"));
    event_queue.push(event(2, "event 4"));
 
    while(!event_queue.empty()) {
        event ev = event_queue.top();
        event_queue.pop();
        
        ev.run();
    }
}
Как видно, если запустить пример, то получится следующий результат:
Код
event event 1(10) running
event event 3(7) running
event event 2(4) running
event event 4(2) running
Задачи выполняются в порядке убывания по приоритету.
2
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.10.2010, 19:00

Создать объект стек и создать объект очередь с перегруженными операциями
Помогите, пожалуйста с заданиями. 1. Унарная операция Создать объект стек,...

Создать шаблон класса очередь
Создать шаблон класса очередь . Написать программу,демонстрирующую работу с...

Создать класс List - очередь
Создать класс List - очередь. Определить операторы &quot;+&quot; – сложения списков, &quot;-&quot;...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru