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

Ошибка в поиску дерева - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Чтение строки неизвестной длины http://www.cyberforum.ru/cpp-beginners/thread389914.html
реализация на СИ как прочитать строку неизвестной длины? Чтение должно быть не посимвольным. Строка вводиться вручную.
C++ Обработка изображений Здравствуйте, помогите пожалуйста с алгоритмом или написанием программы на с++. Задача такая: нужно на jpeg/bmp фотографии определить тень. http://www.cyberforum.ru/cpp-beginners/thread389903.html
Проверить, превосходят ли элементы строк матрицы заданное число C++
ребят выручайте нужен код по этой проге срочно в универе уже ругаются((( Дано натуральное число N, вещественная матрица N x N , вещественное число x. Получить последовательность из 0 и 1 (b1,b2,...bn), где bi=1, если элементы i-той строки не превосходят x1 и b1=1,в противном случае.
C++ Call of nonfunction
#include <stdio.h> #include <conio.h> #include <math.h> double eps = 1e-9; int k; //------------epsilon double ep (double x) { int i; double q,a,s; i = 0; s = a = 1;
C++ Выведите числа в порядке возрастания http://www.cyberforum.ru/cpp-beginners/thread389891.html
Отсортируйте заданный массив. Первая строка входных данных содержит количество элементов в массиве N, N ≤ 105. Далее идет N целых чисел, не превосходящих по абсолютной величине 10^9. Выведите эти числа в порядке возрастания. Пример: Входные данные: 3 2 3 1 Выходные данные: 1 2 3
C++ оператор this Прочитал раздел и с книги Стратуструпа о операторе this. но не фига не понял где его использовать его применение подробнее

Показать сообщение отдельно
murzilka6002
0 / 0 / 0
Регистрация: 11.11.2011
Сообщений: 23
24.11.2011, 01:19     Ошибка в поиску дерева
Не могу найти в чем ошибка, должен производиться поиск по всему дереву, а он дальше первого уровня не идет.

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
126
127
128
129
130
131
132
133
134
#include <cstdlib>
#include <iostream>
#include <vector>
#include <string>
 
using namespace std;
 
//Class drzewa
class tree_node
       {
       public:
        int id;                                        //Numer
        string data;                                   //zawartosc
        vector <tree_node> children;                   //dzieci
        };
 
//Funkcja wyszukiwania
void szukaj(tree_node& t, string& s)
{
         if (t.data==s)                                //Wyszuk
            {
             cout<< t.data<<"\t";                      //Wywod wyszukiwania
             cout<<"id= "<< t.id<<endl;
            }           
         for(int i=0; i<t.children.size();i++)         //Sprawdzanie wezla
                {
                 szukaj(t.children[i],s);
                }
}
 
        
int main(int argc, char *argv[])
{
    
tree_node root;
root.id=1;
root.data="Ivan";
 
tree_node node2;
node2.id=2;
node2.data="text";
root.children.push_back(node2);
 
tree_node node3;
node3.id=3;
node3.data="Andrzej";
root.children.push_back(node3);
 
tree_node node4;
node4.id=4;
node4.data="Swieta";
root.children.push_back(node4);
 
tree_node node5;
node5.id=5;
node5.data="Kolia";
root.children.push_back(node5);
 
tree_node node6;
node6.id=6;
node6.data="Mihal";
node2.children.push_back(node6);
 
tree_node node7;
node7.id=7;
node7.data="Ivan";
node2.children.push_back(node7);
 
tree_node node8;
node8.id=8;
node8.data="Tania";
node4.children.push_back(node8);
 
tree_node node9;
node9.id=9;
node9.data="Andrzej";
node4.children.push_back(node9);
 
tree_node node10;
node10.id=10;
node10.data="Olia";
node5.children.push_back(node10);
 
tree_node node11;
node11.id=11;
node11.data="Sasza";
node5.children.push_back(node5);
 
tree_node node12;
node12.id=12;
node12.data="Tania";
node5.children.push_back(node12);
 
tree_node node13;
node13.id=13;
node13.data="Kolia";
node7.children.push_back(node13);
 
tree_node node14;
node14.id=14;
node14.data="Tania";
node10.children.push_back(node14);
 
tree_node node15;
node15.id=15;
node15.data="Swieta";
node10.children.push_back(node15);
 
tree_node node16;
node16.id=16;
node16.data="Dawid";
node12.children.push_back(node16);
 
tree_node node17;
node17.id=17;
node17.data="Wiktor";
node12.children.push_back(node17);
 
tree_node node18;
node18.id=18;
node18.data="Ania";
node12.children.push_back(node18);
 
 
////////////////Wyszukiwanie//////////////////////////
 
string szuk;
 
cin>>szuk;
szukaj(root,szuk);
 
    system("PAUSE");
    return EXIT_SUCCESS;
}
Добавлено через 10 часов 18 минут
Как бы с предыдущим вопросом разобрался, добавил ссылку на адрес узла, изменил vector на deque.
Но теперь проблема другая - выбивает ошибку памяти при запуску программы (при компилировании нет ошибки).
Ошибка появляется начиная с node13 (это третий ряд потомков root->node2->node7->node13)
В чём может быть ошибка?
Вот полный код
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
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
#include <cstdlib>
#include <iostream>
#include <vector>
#include <string>
#include <deque>
 
using namespace std;
 
//Class drzewa
class tree_node
       {
       public:
        int id;                                        //Numer
        string data;                                   //zawartosc
        deque <tree_node> children;                   //dzieci
        };
 
//Funkcja wyszukiwania
void szukaj(tree_node& t, string& s)
{
         if (t.data==s)                                //Wyszuk
            {
             cout<<"id= "<< t.id<<"\t";                //Wywod wyszukiwania
            }           
         for(int i=0; i<t.children.size();i++)         //Sprawdzanie wezla
                {
                 szukaj(t.children[i],s);
                }
}
 
        
int main(int argc, char *argv[])
{
    
tree_node root;
root.id=1;
root.data="Ivan";
 
tree_node node2;
node2.id=2;
node2.data="Dawid";
root.children.push_back(node2);
tree_node& node2Ref = root.children.back();
 
tree_node node3;
node3.id=3;
node3.data="Andrzej";
root.children.push_back(node3);
tree_node& node3Ref = root.children.back();
 
tree_node node4;
node4.id=4;
node4.data="Swieta";
root.children.push_back(node4);
tree_node& node4Ref = root.children.back();
 
tree_node node5;
node5.id=5;
node5.data="Kolia";
root.children.push_back(node5);
tree_node& node5Ref = root.children.back();
 
tree_node node6;
node6.id=6;
node6.data="Mihal";
node2Ref.children.push_back(node6);
tree_node& node6Ref = node2.children.back();
 
tree_node node7;
node7.id=7;
node7.data="Ivan";
node2Ref.children.push_back(node7);
tree_node& node7Ref = node2.children.back();
 
tree_node node8;
node8.id=8;
node8.data="Tania";
node4Ref.children.push_back(node8);
tree_node& node8Ref = node4.children.back();
 
tree_node node9;
node9.id=9;
node9.data="Andrzej";
node4Ref.children.push_back(node9);
tree_node& node9Ref = node4.children.back();
 
tree_node node10;
node10.id=10;
node10.data="Olia";
node5Ref.children.push_back(node10);
tree_node& node10Ref = node5.children.back();
 
tree_node node11;
node11.id=11;
node11.data="Sasza";
node5Ref.children.push_back(node11);
tree_node& node11Ref = node5.children.back();
 
tree_node node12;
node12.id=12;
node12.data="Tania";
node5Ref.children.push_back(node12);
tree_node& node12Ref = node5.children.back();
 
tree_node node13;
node13.id=13;
node13.data="Kolia";
node7Ref.children.push_back(node13);
tree_node& node13Ref = node7.children.back();
 
tree_node node14;
node14.id=14;
node14.data="Tania";
node10Ref.children.push_back(node14);
tree_node& node14Ref = node10.children.back();
 
tree_node node15;
node15.id=15;
node15.data="Swieta";
node10Ref.children.push_back(node15);
tree_node& node15Ref = node10.children.back();
 
tree_node node16;
node16.id=16;
node16.data="Dawid";
node12Ref.children.push_back(node16);
tree_node& node16Ref = node12.children.back();
 
tree_node node17;
node17.id=17;
node17.data="Wiktor";
node12Ref.children.push_back(node17);
tree_node& node17Ref = node12.children.back();
 
tree_node node18;
node18.id=18;
node18.data="Ania";
node12Ref.children.push_back(node18);
tree_node& node18Ref = node12.children.back();
 
 
////////////////Wyszukiwanie//////////////////////////
 
string szuk;
 
cin>>szuk;
szukaj(root,szuk);
cout<<endl;
 
    system("PAUSE");
    return EXIT_SUCCESS;
}
 Комментарий модератора 
Используйте соответствующие теги форматирования кода.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 22:05. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru