Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
filisof13
0 / 0 / 0
Регистрация: 11.05.2017
Сообщений: 9
1

Ошибка при работе с указателем! (key[0]->pr) x006790b8 {size=3 d=2 key=0x0067dcc8 {0xfdfdfdfd {pr=? }

10.05.2018, 00:43. Просмотров 90. Ответов 1
Метки нет (Все метки)

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
#ifndef DHEAP_H
#define DHEAP_H
#include <iostream>
#include <locale.h>
#include <cmath>
#include <cstdlib>
#include "Graph.h"
 
#define Limit 1000
 
using namespace std;
 
template <typename TYPE>
class Prior
{ 
    public:
         TYPE pr;
};
 
template <typename TYPE>
class DHeap
{
    private:
        int size; // Количество элементов в куче
        int d; // Арность  D-кучи 
        Prior<TYPE>** key; // Указатель на первый элемент D-кучи  
    public:
        DHeap(int arn, int count); // Конструктор с параметрами (Арность Кучи, Количество элементов)
        DHeap(const DHeap &H); // Конструктор копирования
        ~DHeap(); // Деструктор
        void Trans(const int i, const int j); // Транспонирование
        int GetParent(int p); // Возвращает индекс Родителя
        void Vspl(int c); // Всплытие
        void Pogruzh(int d); // Погружение
        void Okuch(); // Окучивание
        int Minchild(int a); //Изъятие элемента с минимальным ключом
        void MIN_Remove(); // Изъятие эл-та с минимальным ключом
        void Remove(int a); ///Удаление эл-та с заданным ключом
        void Insert(TYPE b); // Вставка элемента
        int GetSize(); // Возвращает количество эл-тов в куче
        void Print(); // Вывод на экран
};
 
template <typename TYPE>
void DHeap<TYPE>::Print()
{
    int level = 0, tmp = 0;
    while (tmp < size)
    {
        tmp = tmp + pow (d, level);
        level++;
    }
    int k = 1;
    cout << " \t " << key[0]->pr << endl;
    for (int i = 1; i < level; i++)
    {
        for (int j = k; j < (k + pow(i, d) && (j < size)); j++)
            cout << key[j]->pr << "\t";
        cout << endl;
        if ((k + pow(d, i)) > size)
            k = size;
        else k = k + pow(d, i);
 
    }
 
}
---------------------------------------------------------------------------------------------

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
#include <iostream>
#include <locale.h>
#include <ctime>
#include "Algorithm.h"
#include "PrQueue.h"
using namespace std;
 
void main(){
    int arnost, size, ptr;
    setlocale(LC_CTYPE, "russian");
    try{
        cout << " Пирамидальная сортировка!" << endl;
        cout << "Введите АРНОСТЬ D-кучи" << endl;
        cin >> arnost;
        DHeap<int> *heap = new DHeap<int>(arnost, 0);
        cout << "Введите количество элементов в D-куче: " << endl;
        cin >> size;
        srand(time(NULL));
        for (int i = 0; i < size; i++)
        {
            ptr = 1 + static_cast <int> (rand()) / (static_cast <int> (RAND_MAX / (10 - 1)));
            heap->Insert(ptr);
        }
    
    cout << "Вы ввели исходную КУЧУ :" << endl;
    heap->Print();
 
    cout << "После Пирамидальной Cортировки:" << endl;
    heap->Okuch();
    Algorithm<int>::Pyramid_Sort(heap);
    heap->Print();
}
    catch (const char* exeption){
        cerr << exeption << endl;
    }
    std::system("pause");
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.05.2018, 00:43
Ответы с готовыми решениями:

ошибка: need 'typename' before 'Dictionary<Key, Value>::Node_key' because 'Dictionary<Key, Value
привет всем! почему выскакивает ошибка /home/september/console/tabld_node/dictionary.cpp:93:...

Ошибка при работе с указателем на указатель
Пытаюсь разобраться с указателем на указатель. // ConsoleApplication3.cpp: определяет точку входа...

Ошибка при работе с двойным указателем. В функциях Sort и Print Elem[i]->GetBegin не видит методы класса Edge
#ifndef EDGE_H #define EDGE_H #include &lt;iostream&gt; using namespace std; template &lt;typename...

Ошибка: declaration is not allowed here в int key
Мне передали код для Turbo C++, но, у меня появились 3 ошибки, пытался найти на английских форумах,...

Исключение при работе с указателем на двухмерный массив
Всем привет, я новенький на этом форуме и с++ изучаю тоже недолго. Возникла некая проблемка, хочу...

1
MINO
12 / 12 / 5
Регистрация: 03.06.2016
Сообщений: 124
Завершенные тесты: 1
10.05.2018, 07:51 2
Prior<TYPE>** key; // Указатель на первый элемент D-кучи
Это указатель указателя, а вы key[0] работаете с ним как с переменной стека.

Могу ошибаться сам еще не много знаю.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.05.2018, 07:51

"Использована неинициализированная локальная переменная" при работе с указателем
использована неинициализированная локальная переменная ukaz !!!! Прошу посмотрите на функцию...

Ошибка violation of PRIMARY or UNIQUE KEY при работе с базой Firebird (DataSnap)
Здравствуйте, уважаемые форумчане! Помогите,пожалуйста, если кто может подсказать, помочь...

#1170 - BLOB/TEXT column 'id' used in key specification without a key length
После выполнения этого кода: CREATE TABLE forum_themes( id TINYTEXT, name TINYINT, autor_name...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

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