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

Очередь с приоритетом - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Циклы - срочно http://www.cyberforum.ru/cpp-beginners/thread326326.html
Пишу в Borland C++. Ежемесячная стипендия студента составляет А р., а расходы на проживание превышают стипендию и составляют В р. в месяц. Рост цен ежемесячно увеличивает расходы на 3%. Составьте...
C++ "Склеивание" 2-х байт Доброго времени суток! В свободное время изучаю C++. В качестве IDE выступает Visual C++ 2010 Express. Столкнулся с одной трудностью. Нужно считать из бинарного файла два байта. Потом объединенить... http://www.cyberforum.ru/cpp-beginners/thread326306.html
Библиотека C++
В библиотеке есть список книг. Каждая запись этого списка содержит фамилии авторов, название книги, год издания. Определить, в данном списке книги, в названии которых встречается некоторое ключевое...
C++ Определить количество абитуриентов, проживающих в городе Киеве
Задана ведомость абитуриентов, сдавших вступительные экзамены в университет. В каждой строке данной ведомости записано фамилию абитуриента, его постоянное место жительства и полученные им оценки по...
C++ template, узнать тип переменной http://www.cyberforum.ru/cpp-beginners/thread326297.html
template <class RCIN> RCIN cinn(void) { RCIN enter; if(RCIN == std::string) // Как узнать тип RCIN ?? getline(std::cin, enter); else std::cin >> enter; return enter; } Нужно узнать тип...
C++ Перевод из числа в строку Доброго времени суток, уважаемые! Интересует такой вопрос: есть ли в языке C++ оператор перевода из числа в строку. Раньше изучал Pascal, там был простой оператор inttostr. А как здесь? Задача,... подробнее

Показать сообщение отдельно
revaldo666
9 / 9 / 1
Регистрация: 18.07.2010
Сообщений: 180

Очередь с приоритетом - C++

26.06.2011, 21:17. Просмотров 2811. Ответов 7
Метки (Все метки)

Всем привет .
Собственно нужно организовать очередь с приоритетом.
Задание:
В офисе один принтер, на печать должны подоватся те документы которые выше по приоритету.
Имеются такие дефайны.
Код:
C++
1
2
3
4
5
6
#define FULL 10 //макс.размер очереди
#define EMPTY 0 
#define DIRECTOR 10 //приоритет директора
#define MANAGER 7 //приоритет мэнеджера
#define ACCOUNTANT 5 //приоритет бухгалтера
#define SECRETORY 2 //приоритет секретаря
Имеются 3 класса
1 класс содержит таймер (CTimer)
2-й класс CDoc он содержит поля
Код:
C++
1
2
3
4
CTimer start; //время поступления документа на печать
    CTimer print_time; //время сколько будет печататься документ
    int priority; //приоритет 
    char text[200];//собственно сам текст
3-й класс CPrint
имеет 2 поля
Код:
C++
1
2
CDoc print[FULL];
    int top; //вершина стэка
не получается организовать очередь, что-то я туплю...
суть очереди:
Если на печать поступает документ от секретаря например в 12:00 и время печати 10 минут,
после в 12:03 поступает к примеру документ от мэнеджера,
а в 12:09 от директора,
то после завершения печати документа секретаря должны распечататся документы директора, так как его приоритет больше.
Вот мой метод Push()
Если не сложно помогите плиз.
Код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
void CPrint::Push(CDoc & p)
{
    if(IsFull())
        return;
    int i=top-1;
    if(i<0){
        print[top]=p;
        print[top++].priority=p.priority;
        return;
    }
    for(int n=i;n>=0;n--)
    {
        if(p.priority<=print[n].priority)
        {
            for(int m=top;m>n;m--)
            {
            print[m]=print[m-1];
            print[m].priority=print[m-1].priority;
            }
            print[n+1]=p;
            print[n+1].priority=p.priority;
            top++;
            return;
        }
    }
    for(int n=top;n>0;n--)
    {
        print[n]=print[n-1];
        print[n].priority=print[n-1].priority;
    }
    print[0]=p;
    print[0].priority=p.priority;
    top++;
}
заранее спасибо
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru