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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Циклы - срочно http://www.cyberforum.ru/cpp-beginners/thread326326.html
Пишу в Borland C++. Ежемесячная стипендия студента составляет А р., а расходы на проживание превышают стипендию и составляют В р. в месяц. Рост цен ежемесячно увеличивает расходы на 3%. Составьте программу расчета необходимой суммы денег, которую единовременно надо попросить у родителей, чтобы можно было прожить учебный год (10 месяцев), используя только эти деньги и стипендию.
C++ "Склеивание" 2-х байт Доброго времени суток! В свободное время изучаю C++. В качестве IDE выступает Visual C++ 2010 Express. Столкнулся с одной трудностью. Нужно считать из бинарного файла два байта. Потом объединенить их HEX значения и результат перевести в десятичное. Например: два байта в HEX 1F и 2B. Объединение: 1F2B. Десятичное: 7979. Хотелось бы прочитать, чтобы нибудь на это тему. Буду признателен за... http://www.cyberforum.ru/cpp-beginners/thread326306.html
Библиотека C++
В библиотеке есть список книг. Каждая запись этого списка содержит фамилии авторов, название книги, год издания. Определить, в данном списке книги, в названии которых встречается некоторое ключевое слово (например, "ПЭВМ"). Если есть, то вывести на печать фамилии авторов, название и год издания всех этих книг. Ключевое слово ввести с клавиатуры
C++ Определить количество абитуриентов, проживающих в городе Киеве
Задана ведомость абитуриентов, сдавших вступительные экзамены в университет. В каждой строке данной ведомости записано фамилию абитуриента, его постоянное место жительства и полученные им оценки по отдельным дисциплинам (например, физики, математики, литературы). Необходимо определить количество абитуриентов, проживающих в городе Киеве и сдали экзамены по средним баллом не ниже 4, распечатать их...
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; } Нужно узнать тип RCIN.
C++ Перевод из числа в строку Доброго времени суток, уважаемые! Интересует такой вопрос: есть ли в языке C++ оператор перевода из числа в строку. Раньше изучал Pascal, там был простой оператор inttostr. А как здесь? Задача, собственно, такова: Ввести с клавиатуры натуральное число n. Получить символьное пред-ставление этого числа в виде последовательности цифр и пробелов, отделяю-щих группы по три цифры, начиная... подробнее

Показать сообщение отдельно
revaldo666
9 / 9 / 1
Регистрация: 18.07.2010
Сообщений: 180
26.06.2011, 21:17     Очередь с приоритетом
Всем привет .
Собственно нужно организовать очередь с приоритетом.
Задание:
В офисе один принтер, на печать должны подоватся те документы которые выше по приоритету.
Имеются такие дефайны.
Код:
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++;
}
заранее спасибо
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 08:25. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru