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

Шаблон очереди с приоритетом и вложенным классом - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Программка из 4 главы книги Страуструпа принципы и практика - не работает http://www.cyberforum.ru/cpp-beginners/thread1502246.html
В общем в 4 главе в подпункте векторы на странице 152 имеется вот такой код: #include <iostream> #include <conio.h> #include "std_lib_facilities.h" #include <clocale> int main() { setlocale (LC_ALL, "Russian");
C++ NullReferenceException через некоторое время Написал простенькую программу. Получает дескриптор окна, в таймере проверяет цвет пикселя на экране и если все верно, то отправляет через PostMessage() сообщения WM_LBUTTONDOWN и WM_LBUTTONDOWN. Некоторое время программа работает нормально, а потом вылетает ошибка NullReferenceException. Пишу на С++ с использованием функций WinAPI. Заметил что при работе программы постоянно увеличивается объем... http://www.cyberforum.ru/cpp-beginners/thread1502239.html
Утечка памяти (решение СЛАУ методом Крамера, матрицы, malloc) C++
Раньше программировал на C#/Java (а как следствие и расхлябанность по отношению к памяти), сейчас пытаюсь осилить C++. Более-менее понял как работают указатели и malloc/calloc/строки. Попробовал закрепить полученные знания на практике - написать программу без vector<>'ов, которая решала бы СЛАУ методом Крамера. Результат налицо - несколько утечек памяти, битый час уже разбираю код и никак не...
Порядок инициализации членов класса C++
Здравствуйте форумчане. Столкнулся с проблемой. Не могу найти доходчивой статьи на данный вопрос про инициалиазцию членов в классе. Прошу вас доходчиво ответить на этот вопрос.
C++ Работа в теле конструктора http://www.cyberforum.ru/cpp-beginners/thread1502172.html
constructor Account::Account(int initialBalance) { if (initialBalance >= 0) balance = initialBalance; if (initialBalance <= 0) { balance = 0; cout << "Incorrect value!\n" << endl; }
C++ Класс "Животное" Задача такова: нужно написать класс, условно говоря, "животное" со свойствами:имя, возраст и голос. И внутри класса конструктор и метод, который выводит эту инфу на экран в стиле "такое-то животное зовут так-то и блаблабла". Собственно проблема возникла с тем, что информация задается в параметре, и у меня никак не получается ее вывести. Если спросить у пользователя эти же данные и сохранить... подробнее

Показать сообщение отдельно
Lena86
0 / 0 / 0
Регистрация: 22.08.2014
Сообщений: 81

Шаблон очереди с приоритетом и вложенным классом - C++

21.07.2015, 00:55. Просмотров 394. Ответов 2
Метки (Все метки)

Доброго времени суток. Задание создать шаблонный класс очереди с приоритетом плюс с вложенным классом.
Реализовать возможность добавления, извлечения, получения без извлечения элементов и очистку очереди.

все вроде понятно, но реализовать на практике не могу. написала горе-код, прошу помочь довести до ума

Header.h

C++
1
2
3
4
5
#pragma once
#include <iostream>
#include <string>
#include <time.h>
using namespace std;

Priority.h

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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
#pragma once
#include "Header.h"
 
template <class T, class P>
class PriorityQueue
{
    class Size
    {
 
        int MaxQueueLength;
        int QueueLength;
 
        friend class PriorityQueue<T>;
    };
    
    T *Wait;
    T *Pri;
        
public:
    PriorityQueue(int s);   
    ~PriorityQueue();
 
    void Add(T a, T b);
    T Extract();
    bool IsEmpty();
    bool IsFull();
    T GetCount();
    void Show();
    void Clear();
 
};
 
template <class T, class P>
PriorityQueue<T>::PriorityQueue(int s)
{
    MaxQueueLength=s;
    Wait=new int[MaxQueueLength];
    Pri=new int[MaxQueueLength];
    QueueLength=0;
}
 
template <class T, class P>
PriorityQueue<T>::~PriorityQueue()
{
    delete[]Pri;
    delete[]Wait;
}
 
template <class T, class P>
void PriorityQueue<T>::Show()
{
    for(int i=0; i<QueueLength; i++)
    {
        cout<<Wait[i]<<"-"<<Pri[i]<<"\n"<<endl;
    }
}
 
template <class T, class P>
void PriorityQueue<T>::Clear()
{
    QueueLength=0;
}
 
template <class T, class P>
bool PriorityQueue<T>::IsEmpty()
{
    return QueueLength==0;
}
 
template <class T, class P>
bool PriorityQueue<T>::IsFull()
{
    return QueueLength==MaxQueueLength;
}
 
template <class T, class P>
T PriorityQueue<T>::GetCount()
{
    return QueueLength;
}
 
template <class T, class P>
void PriorityQueue<T>::Add(T a, T b)
{
    if(!IsFull())
    {
       Wait=a;
       Pri[QueueLength]=b;
       QueueLength++;
    }
}
 
template <class T, class P>
 T PriorityQueue<T>::Extract()
{
    if(!IsEmpty)
    {
    int max_pri=Pri[0];
    int pos_max_pri=0;
 
    for(int i=1; i<QueueLength;i++)
    {
        if(max_pri<Pri[i])
        {
            max_pri=Pri[i];
            pos_max_pri=i;
        }
        int temp1=Wait[pos_max_pri];
        int temp2=Pri[pos_max_pri];
 
        for(int i=pos_max_pri; i<QueueLength-1;i++)
        {
            Wait[i]=Wait[i+1];
            Pri[i]=Pri[i+1];
        }
        QueueLength--;
        return temp1;
    }
    }
    else return -1;
 
}


main.cpp

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include "Header.h"
#include "Priority.h"
 
void main()
{
    srand(time(0));
    PriorityQueue <int> QUP(25);
 
    for(int i=0;i<5;i++)
    {
    QUP.Add(rand()%100, rand()%12);
    }
 
    QUP.Show();
 
 
}
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru