Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 24, средняя оценка - 4.75
xuston2010
2 / 2 / 0
Регистрация: 16.10.2010
Сообщений: 30
#1

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

20.10.2010, 15:31. Просмотров 3179. Ответов 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++):

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

Создать очередь. Добавить элемент в очередь. Удалить элемент из очереди - C++
Нужно создать очередь. Добавить элемент в очередь. Удалить элемент из очереди. Вот моё "творение". int main() { int...

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

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

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

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

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
fasked
Эксперт С++
4936 / 2516 / 180
Регистрация: 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
Эксперт С++
4936 / 2516 / 180
Регистрация: 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
Привет! Вот еще темы с ответами:

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

Создать очередь с приоритетом (Ошибка) - C++
Здравствуйте, Друзья! Стоящая задача (создать очередь с приоритетом) выполнена, но есть ошибка. Друзья, гляньте пожалуйста &quot;свежим...

Создать stl очередь, заполнить ее случайным образом и отсортировать - C++
вопрос в заголовке, заранее спасибо.

Создать контейнер по типу очередь, состоящий из символов (библиотека STL) - C++
Ребят, помогите пожалуйста решить задачу : Создать контейнер по типу очередь, состоящий из символов. Данные в очередь ввести с клавиатуры....


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
20.10.2010, 19:00
Ответ Создать тему
Опции темы

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