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

Шаблон класса "очередь с приоритетами" - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ quicksort выдает "чужое" число http://www.cyberforum.ru/cpp-beginners/thread1005017.html
здравствуйте! ниже прилагаю код программы. суть программы в том, чтобы отсортировать числа по их кодам (код получается заменой младшего бита старшего байта числа на 1, используя структуру с 2мя полями) с помощью 3х разных сортировок (quick, merge, heap), засекая их время проблема заключается в том, что quicksort на последнем проходе выдает непонятно откуда взявшееся число :( помогите...
C++ Вычислить значение функции Уважаемые пользователи форума. Прошу помочь в оформлении кода с библиотеками stdio.h,math.h,conio.h. Вот задания: http://www.cyberforum.ru/cpp-beginners/thread1005003.html
C++ Задачи, файлы и структуры
Доброго времени суток! Помогите решить 4 задачи, а то с программированием как то не задается. microsoft visual studio 2012 файлы 1. Дан текстовой файл и некоторое слово. Напечатать те строки файла, которые содержат данное слово. 2. Дан файл, содержащий текст на русском языке и некоторая буква. Под¬считать, сколько слов начинается с указанной буквы. 1. Дан файл Bibl, содержащий...
C++ Задача "Салфетки"
Задача: На квадратный стол размером NХN раскладывают разноцветные прямоугольные салфетки. Каждая салфетка кладется параллельно сторонам стола , салфетки могут лежать друг на друге и свисать со стола , или даже падать мимо стола. Салфетка задается координатами углов : левый верхний , правый нижний ( целые числа ) и цветом ( буква) Левый верхний угол стола имеет координаты 0,0 Какие цвета...
C++ повторный прогон программы http://www.cyberforum.ru/cpp-beginners/thread1004987.html
Подскажите, пожалуйста, как сделать повторный прогон алгоритмов без запуска программы (хотите начать заново? (y/n)). На примере простейшей программы "Hello, world". #include <iostream> int main() { std::cout<<"Hello, world!\n"; }
C++ программа не работает задание: Определить входит ли введённая цифра в заданное натурально число. код выдаёт ошибки и я не могу понять как их исправить т.к. нуб. помогите пожалуйста.... код программы: #include <iostream> using namespace std; int main() { подробнее

Показать сообщение отдельно
mikki234
1 / 1 / 0
Регистрация: 10.08.2015
Сообщений: 32
10.11.2015, 14:53     Шаблон класса "очередь с приоритетами"
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
123
124
125
#include<iostream>
using namespace std;
 
template <typename T> struct Element
{
    T data;
    int priority;
};
 
template <typename T> class Queue
{
public:
    Queue();
    ~Queue();
    void Add(const Element<T> &element);
    Element<T> Remove();
    int GetCount();
    void Print();
    void PrintWithPriority();
    bool IsFull();
    bool IsEmpty();
    void Clear();
private:
    enum {empty=-1, full=999};
    Element<T> q[full + 1];
    int first;
};
 
template <typename T> Queue<T>::Queue()
{
    first = empty;
}
 
template <typename T> Queue<T>::~Queue()
{
    delete[] q;
}
 
template <typename T> void Queue<T>::Clear()
{
    first = empty;
}
 
template <typename T> bool Queue<T>::IsFull()
{
    return first == full;
}
 
template <typename T> bool Queue<T>::IsEmpty()
{
    return first == empty;
}
 
template <typename T> int Queue<T>::GetCount()
{
    return first + 1;
}
 
template <typename T> void Queue<T>::Add(const Element<T> & element)
{
    int i;
    for (i = first; i >= 0; i--)
        if (q[i].priority > element.priority)
            break;
    if (IsFull())
    {
        if (i != -1)
        {
            for (int j = 0; j < i; j++)
                q[j] = q[j + 1];
            q[i] = element;
        }
    }
    else
    {
        for (int j = first; j > i; j--)
            q[j + 1] = q[j];
        q[i + 1] = element;
        first++;
    }
}
 
template <typename T> Element<T> Queue<T>::Remove()
    {
        if (IsEmpty())
            return Element();
        return q[first--];
    }
 
template <typename T> void Queue<T>::Print()
{
    if (IsEmpty())
        return;
    for (int i = first; i >= 0; i--)
        cout << q[i].data << "t";
    cout << endl;
}
 
template <typename T> void Queue<T>::PrintWithPriority()
{
    if (IsEmpty())
        return;
    for (int i = first; i >= 0; i--)
        cout << q[i].data << ", pr: " << q[i].priority << "\t";
    cout << endl;
}
 
int main()
{
    Queue<char> Q;
    Element<char> Array[] = { {'A',3},{'B',2},{'C',12},{'D',0},{'E',2} };
    int length = sizeof(Array) / sizeof(Element<char>);
    for (int i = 0; i < length; i++)
    {
        Q.Add(Array[i]);
    }
    Q.PrintWithPriority();
    Element<char> exempl;
    exempl.data = 'F';
    exempl.priority = 11;
    Q.Add(exempl);
    Q.PrintWithPriority();
    system("pause");
    return 0;
}
 
Текущее время: 23:25. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru