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

Деревья - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Освоение технологии реализации позиционных, линейных коллекций на примере АТД "Список". Освоение методики тестирования трудоѐмкости реализации колл http://www.cyberforum.ru/cpp-beginners/thread773624.html
#include <string> #include <time.h> using namespace std; int k,nn,kk=0; bool prover=false; int search1=0; //Создаем структуру node struct node { int key;
C++ Определить месторасположение точки в декартовой системе координат (найдите ошибку) Задана точка M с координатами (x,y). Определить месторасположение этой точки в декартовой системе координат (является ли эта точка началом координат, лежит на одной из координатных осей или расположена в одном из координатных углов). #include<iostream> int main () { int x; int y; http://www.cyberforum.ru/cpp-beginners/thread773621.html
Определить, пересекаются ли парабола и прямая (найдите ошибку) C++
Определите, пересекаются ли парабола у=cx2+dx+f и прямая y=ax+b. При положительном ответе найти точки пересечения. #include<iostream> #include <math.h> using namespace std; int main () { float a, b, c, d, f, x, x1, x2, y, y1, y2; cin>>a>>b>>c>>d>>f; for(x=-5; x<=5;x++)
C++ почему то не не показывает числа минимального элемента и суммы
int main(void) { setlocale(LC_ALL, "Russian"); printf(" Кадесников Павел ИНБс-11 "); printf("\n В одномерном массиве, состоящем из n вещественных элементов, вычислить:\n"); printf("\n1.)минимальный элемент массива\n"); printf("\n2.)сумму элементов массива, расположенных между первым и последним положительными элементами.\n"); printf("\nПреобразовать массив таким образом, чтобы сначала...
C++ Реально ли понять стандарт C++ на английском? http://www.cyberforum.ru/cpp-beginners/thread773610.html
Народ всем привет вот шас скачал стандарт плюсов на инглише и хочу спросить если я буду переводить его ну например через гугл я его пойму или это плохая затея?
C++ Составить программу, в которой описывается структура из полей... 2)Составить программу, в которой описывается структура из полей: Название товара, Цена товара, Процентная ставка кредита, Срок кредита (в месяцах). Организовать ввод двух структурных переменных, вывод каждой структуры на экран и расчет значения «Ежемесячный платеж» (считается, что вся сумма платежа выплачивается ежемесячно равными частями). подробнее

Показать сообщение отдельно
Tokez
-3 / 1 / 0
Регистрация: 25.04.2011
Сообщений: 20
28.01.2013, 16:44     Деревья
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
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
#include "stdafx.h"
#include <iostream>
#include <conio.h>
 
using namespace std;
struct tree
{
    int data;
    tree *left;
    tree *right;
    tree *parent;
    tree(int d)
    {
        data = d;
        left = NULL;
        right = NULL;
        parent = NULL;
    }
};
class Wood
{
public:
    tree *root; 
    tree *current;
    int count;
 
    //Конструктор класса Wood
    Wood()
    {
        count = 0;
    }
 
    //Метод, создающий корень дерева
    void CreateTree(int d)
    {
        if (!count)
        {
            root = new tree(d);
            current = root;
            count++;
        }
        else
        {
            cout << "Дерево уже создано!" << endl;
            system("pause");
            return;
        }
    }
 
    //Метод, вставляющий элемент в дерево
    void AddElem(int d)
    {
        if (count == 0)
        {
            cout << "Дерево не существует! Создайте дерево." << endl;
            system("pause");
            return;
        }
        else
        {
            current = root;
            do
            {
                if (d >= current->data)
                {
                    if (current->right != NULL)
                    {
                        current = current->right;
                    }
                    else
                    {
                        tree *NewElem = new tree(d);
                        current->right = NewElem;
                        NewElem->parent = current;
                        count++;
                        break;
                    }
                }
                else if (d < current->data)
                {
                    if (current->left != NULL)
                    {
                        current = current->left;
                    }
                    else
                    {
                        tree *NewElem = new tree(d);
                        current->left = NewElem;
                        NewElem->parent = current;
                        count++;
                        break;
                    }
                }
            }
            while (current != NULL);
        }
    }
 
    //Метод, ищущий елемент или количество определенных елементов в дереве
    int SearchElem(int d)
    {
        if (count == 0)
        {
            return -1;
        }
        else
        {
            int CountOfTrueElem = 0;
            current = root;
            //do
            //{
                /*if (current->data == d)
                {
                    CountOfTrueElem++;
                    current = current->right;
                    while (current != NULL);
                    {   
                        if (current->data == d)
                        {
                            CountOfTrueElem++;
                            current = current->right;
                        }
                        else
                        {
                            break;
                        }
                    }
                }*/
                do
                {
                    if (current->data == d)
                    {
                        CountOfTrueElem++;
                        current = current->right;
                    }
                    else if (d > current->data)
                    {
                        current = current->right;
                    }
                    else if (d < current->data)
                    {
                        current = current->left;
                    }
                }
                while (current != NULL);
                /*if (d > current->data)
                {
                    current = current->right;
                }
                else if (d < current->data)
                {
                    current = current->left;
                }*/
            //}
            //while (current != NULL);
            return CountOfTrueElem;
        }
    }
 
    //Метод, возвращающий максимальный элемент в дереве
    int GetMax()
    {
        if (count == 0)
        {
            return -1;
        }
        else
        {
            current = root;
            while (current->right != NULL)
            {
                current = current->right;
            }
            return current->data;
        }
    }
    
    //Метод, возвращающий минимальный элемент в дереве
    /*int GetMin()
    {
        if (count == 0)
        {
            return -1;
        }
        else
        {
            current = root;
            while (current->left != NULL)
            {
                current = current->left;
            }
            return current->data;
        }
    }*/
 
    //Метод, выводящий дерево на экран
    void PrintTree(tree* node, int size)
    {
        if (cout == 0)
        {
            cout << "Дерево не существует! Создайте дерево." << endl;
            system("pause");
            return;
        }
        else
        {
            if (node)
            {
                PrintTree(node->right, size + 3);
                for (int i = 0; i < size; i++) cout << " ";
                cout << node->data << endl;
                PrintTree(node->left, size + 3);
            }
        }
    }
 
    //Метод, производящий обход дерева в прямом порядке (кроме самого узла, с которого начинаем обход (корня))
    /*void PriamObhod(tree* node)
    {
        if (node->left != NULL)
            cout << node->left->data << endl;
        if (node->right != NULL)
            cout << node->right->data << endl;
        if (node->left != NULL) PriamObhod(node->left);
        if (node->right != NULL) PriamObhod(node->right);
    }*/
};
void main()
{
    setlocale(0,"Rus");
    Wood NewTree;
    char c[20];
    double d;
    char *end_ptr;
    int dann, Max, Min, Size;
 
    bool Done = false;
    char key;
    while (!Done)
    {
        system("cls");
        if (NewTree.count != 0)
        {
            cout << "Имеется дерево из " << NewTree.count << " элементов" << endl;
        }
        else
        {
            cout << "Дерево еще не создано!" << endl;
        }
        cout << "1 - Создать дерево" << endl;
        cout << "2 - Добавить новый элемент в дерево" << endl;
        cout << "3 - Вывести дерево на экран" << endl;
        cout << "4 - Вывести количество максимальных элементов дерева" << endl;
        cout << "5 - Выход" << endl;
        key = getch();
        switch (key)
        {
        case '5':
            Done = true;
            break;
        case '1':
            do
            {
                cout << "Введите значение корня дерева" << endl;
                cin.getline(c, 20);
                cin.clear();
                cin.sync();
                d = strtod(c, &end_ptr);
            }
            while ((*end_ptr) || (d <= 0));
            dann = (int)d;
            
            NewTree.CreateTree(dann);
            break;
        case '2':
            do
            {
                cout << "Введите значение нового элемента" << endl;
                cin.getline(c, 20);
                cin.clear();
                cin.sync();
                d = strtod(c, &end_ptr);
            }
            while ((*end_ptr) || (d <= 0));
            dann = (int)d;
 
            NewTree.AddElem(dann);
            break;
        case '3':
            NewTree.PrintTree(NewTree.root, NewTree.count);
            system("pause");
            break;
        case '4':
            Max = NewTree.GetMax();
            Size = NewTree.SearchElem(Max);
            if (Max != -1)
            {
                cout << "Найдено " << Size << " максимальных элемента(ов) " << Max << endl;
            }
            else
            {
                cout << "Дерево не существует! Создайте дерево." << endl;
            }
            system("pause");
            break;
        }
    }
}
народ нужна помощь, кто может откомментируйте каждую строчку что где происходит, за ранее большое спасибо)))
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 07:16. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru