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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 5.00
co6ak
Кошковед
407 / 500 / 29
Регистрация: 12.04.2010
Сообщений: 1,392
#1

Любимые бинарные деревья. - C++

11.03.2011, 11:46. Просмотров 1245. Ответов 11
Метки нет (Все метки)

Доброго времени суток.
появилась проблема с решением задачи.
собсна задача:
"найти количество отрицательных узлов в левом и правом поддереве и сравнить их."
функция должна быть int-овская. и что-то там все время выводить.
со стеками памяти у меня как видно не лады.
помогите плз.

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
#include <iostream>;
#include <cstdlib>;
using namespace std;
int n1=0;
int n2=0;
 
struct TREE {
    int info;
    TREE *left;
    TREE *right;
    };
TREE *root = NULL;
int count = 0;
 
void createTree (TREE **current, int n) 
{
    if (n==0) *current=NULL;
    else 
    {   int x;
        int nl=n/2;
        int nr=n-nl-1;
        TREE *tmp = new (TREE) ;
        cout << "\nВведите значение узла \n" ;cin >> x ;
        tmp->info = x;
        count++;
        createTree (&tmp->left, nl);
        createTree (&tmp->right, nr);
        *current=tmp;
    }
}
void ShowSymmetric(TREE *current, int l)
{
    if(current!=NULL)
    {
    ShowSymmetric(current->left, l+1);
    for(int i=0;i<l;i++)
    cout << "\t";
    cout << current->info << endl;
    ShowSymmetric(current->right, l+1);
    }
}
void clearTree(TREE **current)
{
 
    if(*current!=NULL)
    {
    clearTree(&(*current)->left);
    clearTree(&(*current)->right);
    delete *current;
    count--;
    if(count==0)
    *current=NULL;
    }
 
}
void CheckT(TREE *current, int l) 
{
    
    if (current!=NULL)
    { 
        if(int s=current -> info<0) s=1;
        
    }
}
 
void ShowBackSymmetric(TREE *current, int l)
{
 
    if(current!=NULL)
    {
    ShowBackSymmetric(current->right, l+1);
    for(int i=0;i<l;i++)
    cout << "\t";
    cout << current->info << endl;
    ShowBackSymmetric(current->left, l+1);
    }
 
}
int main()
{
 
    setlocale(LC_ALL,"Russian");
    int num;
    char otv;
    do
    {
 
        cout << "1. Построить дерево" << endl
        << "2. Обход в симметричном порядке" << endl
        << "3. Обход в обратно-симметричном порядке" << endl
        << "4. Проверка" << endl 
        << "0. Выход"
        << " = ";
        cin >> otv;
        switch(otv)
        {
        case '1':
 
            cout << endl << "Число вершин дерева = ";
            cin >> num;
            clearTree(&root);
            createTree(&root, num);
            cout << endl << "Дерево создано" << endl;
            break;
 
 
        case '2':
 
            if(root!=NULL)
            {
            ShowSymmetric(root, 0);
            }
            else
            cout << endl << "Дерево пустое" << endl;
            break;
 
        case '3':
 
            if(root!=NULL)
            {
             ShowBackSymmetric(root,0);
            }
            else
            cout << endl << "Дерево пустое" << endl;
            break;
 
 
        case '4':
            if(root!=NULL)
            {
             CheckT(root,0);
            }
            else 
            cout << endl << "Дерево пустое" << endl;
            break;
 
        case '0':
 
            break;
 
        default:
 
            cout << endl << "Ошибка" << endl;
            break;
 
        }
 
    }while(otv!='0');
    cin.get();
 
}
Добавлено через 50 минут
PLEASE, HELP!

через час идти сдавать, а надо еще разобраться где я был дурак >_<
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.03.2011, 11:46
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Любимые бинарные деревья. (C++):

Бинарные деревья - C++
Возникла проблема с бинарными деревьями . Нужно определить K - количество узлов, ключ которых больше заданного числа N. Я дошёл только до...

бинарные деревья - C++
Вот у меня есть программа, которая создает бинарное дерево из массива целых чисел. #include &lt;iostream&gt; #include &lt;conio.h&gt; using...

Бинарные деревья - C++
Здравствуйте господа. Очень нуждаюсь в вашей помощи по бинарным деревьям. Собственно, имеется задание: Создать бинарное дерево которое...

бинарные деревья - C++
Здравствуйте! Помогите пожалуйста доделать задачу на бинарные деревья. Язык только начали изучать. Дается не очень легко. Пока...

Бинарные деревья - C++
Вот задачка: Для заданного бинарного дерева поиска проверить условие: • для каждой вершины высота левого поддерева отличается от...

Бинарные деревья - C++
1)Написать программу подсчета числа вершин в бинарном дереве 2)Написать программу копирования одного бинарного дерева в другое ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Artishok
ЧакЭ одобряЭ
277 / 276 / 32
Регистрация: 27.12.2009
Сообщений: 1,767
11.03.2011, 14:06 #2
Цитата Сообщение от co6ak Посмотреть сообщение
функция должна быть int-овская. и что-то там все время выводить.

Не по теме:

очень иформативно

0
co6ak
Кошковед
407 / 500 / 29
Регистрация: 12.04.2010
Сообщений: 1,392
11.03.2011, 14:28  [ТС] #3
фишка в чем.
C++
1
2
3
4
5
6
7
8
9
10
11
int CheckT(TREE *current, int l) 
{
        
        if (current!=NULL)
        { 
                if(int s=current -> info<0)     s=1; 
                else return {}   // и вот тут что то должно быть очень важное :)
                
        }
         else return 0; 
}
есть 2 переменные. n1 n2. собсна в них храниться кол-во отрицательных эл-ов левого и правого поддерева.
0
fasked
Эксперт С++
4936 / 2516 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
11.03.2011, 15:23 #4
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
#include <assert.h>
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
 
typedef struct tree_node {
    struct tree_node * left;
    struct tree_node * right;
    int value;
} node_t, *pnode_t;
 
typedef pnode_t tree_t, *ptree_t;
 
 
int tree_has_left (pnode_t node) {
    assert (node);
    return node->left != NULL;
}
 
int tree_has_right (pnode_t node) {
    assert (node);
    return node->right != NULL;
}
 
int tree_branch_left (pnode_t node, int value) {
    assert (node);
    return node->value <= value;
}
 
int tree_branch_right (pnode_t node, int value) {
    assert (node);
    return !(tree_branch_left(node, value));
}
 
int tree_empty (ptree_t tree) {
    assert (tree);
    return *tree == NULL;
}
 
ptree_t tree_release (ptree_t tree) {
    assert (tree);
    if (*tree) {
        tree_release (&(*tree)->left);
        tree_release (&(*tree)->right);
        free (*tree);
       //printf ("%p was deleted\n", *tree);
        *tree = NULL;
    }
    return tree;
}
 
void tree_add (ptree_t tree, int value) {
    assert (tree);
    if (*tree == NULL) {
        (*tree) = (pnode_t) malloc (sizeof (node_t));
        (*tree)->left = (*tree)->right = NULL;
        (*tree)->value = value;
        printf ("%p [%+d] was added\n", *tree, value);
    }
    else {
        if (tree_branch_left (*tree, value))
            tree_add (&(*tree)->left, value);
        else 
            tree_add (&(*tree)->right, value);
    }
}
 
size_t nnegatives (ptree_t tree, size_t init) {
    assert (tree);
    if (*tree) {
        init += (*tree)->value < 0;
        if (tree_has_left (*tree)) 
            init = nnegatives (&(*tree)->left, init);
        if (tree_has_right (*tree))
            init = nnegatives (&(*tree)->right, init);
    }
 
    return init;
}
 
size_t nnegatives_left (ptree_t tree) {
    assert (tree);
    return nnegatives(&(*tree)->left, 0);
}
 
size_t nnegatives_right (ptree_t tree) {
    assert (tree);
    return nnegatives(&(*tree)->right, 0);
}
 
int main() {
    size_t i;
    tree_t t = NULL;
 
    tree_add(&t, -5);
    for (i = 0; i < 10; ++i)
        tree_add (&t, rand() % 10 - rand() % 10);
 
    printf ("l-tree has %u negatives\n", nnegatives_left  (&t));
    printf ("r-tree has %u negatives\n", nnegatives_right (&t));
 
    tree_release (&t);
}
Код
009D1448 [-5] was added
009D1480 [-6] was added
009D14B8 [+4] was added
009D14F0 [+5] was added
009D1528 [+0] was added
009D1560 [-2] was added
009D1598 [+0] was added
009D15D0 [-6] was added
009D1608 [+0] was added
009D1640 [+3] was added
009D1678 [+1] was added
l-tree has 1 negatives
r-tree has 2 negatives
1
co6ak
Кошковед
407 / 500 / 29
Регистрация: 12.04.2010
Сообщений: 1,392
12.03.2011, 00:25  [ТС] #5
спасибо конечно.
ща еще разбираться как дополнить свой код и что вобще в нем происходит

Добавлено через 3 часа 20 минут
апну.
можно пожалуйста еще вариант хоть чуть-чуть похожий на мой первоначальный вариант )

Добавлено через 5 часов 22 минуты
и вновь ап.
0
Artishok
ЧакЭ одобряЭ
277 / 276 / 32
Регистрация: 27.12.2009
Сообщений: 1,767
12.03.2011, 00:57 #6
чем вас тот вариант не устроил?

Вот тут "имлантировал" поиск отрицательных в свою давно написанную прогу
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
#include <stdlib.h>
#include <iostream>
#include <stdio.h>
#include <windows.h>
 
 
//äëÿ óäîáñòâГ* ðåêîìåГ*äóåòñÿ ââîäèòü ýëåìåГ*ГІГ» ГІ.ГЄ. âûãëÿäèò äåðåâî òîãäГ* ГЄГ°Г*Г±ГЁГўГёГҐ
/*
 50->44->46->45->48->60->59->62
*/
struct uzel
{
   int key;//õðГ*Г*ГЁГІГ±Гї Гў âåðøèГ*ГҐ êëþ÷-Г§Г*Г*Г·ГҐГ*ГЁГҐ
   struct uzel *left, *right;//ГіГЄГ*Г§Г*òåëè Г*Г* ГЇГ°Г*âîå ГЁ ëåâîå ïîääåðåâî
};
 
struct stack
{
  uzel *val;
  struct stack *next;//äîáГ*ГўГЁГ« Гў Г*Г*Г·Г*ëî èçâëåê Гў Г*Г*Г·Г*ëî
};
 
 
uzel* not(int val)
{
  uzel *nod=new uzel;
  nod->key=val;
  nod->left=0;
  nod->right=0;
  return nod;
}
 
void add_tree(uzel **root, int val)//äîáГ*âëåГ*ГЁГҐ ýëåìåГ*ГІГ*
{
  if (*root==0) *root = not(val);//åñëè 0 ñîçäГ*ГҐГ¬ Г*îâóþ ãîëîâó
  if (val < (*root)->key)//åñëè ìåГ*ГјГёГҐ Г§Г*Г*Г·ГҐГ*ГЁГї ГІГ® âëåâî
  {
   if ((*root)->left==0)//åñëè 0 ГІГ® ïðîñòî Г§Г*ГЇГЁГёГҐГ¬ Гў ëåâûé óçåë ýëåìåГ*ГІ
     (*root)->left = not(val);
   else
     add_tree(&(*root)->left, val);//ГЁГ*Г*Г·ГҐ Г*Г*äî äîáГ*ГўГІГј âëåâî âëåâî
  }
  if (val > (*root)->key)//åñëè áîëüøå ГІГ® ГўГЇГ°Г*ГўГ®
  {
   if ((*root)->right==0)
     (*root)->right = not(val);//äîñòГ*òî÷Г*Г® Г§Г*ГЇГЁГ±Г*ГІГј ГІГіГ¤Г* ýëåìåГ*ГІ
   else
     add_tree(&(*root)->right, val);//Гў ГЇГ°Г*âîå ГЇГ°Г*âîå ïîääåðåâî
  }
   return;
}
 
void find_tree(uzel *root, int val)//ïîèñê ýëåìåГ*ГІГ*
{
  if (root==0)//åñëè Г*ГҐГІ Г*ГЁ îäГ*îãî ýëåìåГ*ГІГ* ГІГ® ГўГҐГ°Г*ГіГІГј 0
    return;
  if (val == (root)->key)//Г*Г*øëè - âîò ГЁ Г±Г«Г*ГўГ*Г®
    cout<<"ELem exist";
  if (val < (root)->key)//åñëè ìåГ*ГјГёГҐ ГІГ® ГЁГ±ГЄГ*ГІГј Гў ëåâîì ïîääåðåâå
    find_tree((root)->left, val);
  if (val > (root)->key)//ГЁГ*Г*Г·ГҐ ГўГЇГ°Г*âîì
    find_tree((root)->right, val);
}
 
int rightmost(uzel *root)//Г±Г*ìûé ГЇГ°Г*âûé
{
  while (root->right != NULL)//ïîêГ* Г*ГҐ äîéäåò äî ГЇГ°Г*âîãî Г± ññûëêîé 0
    root = root->right;//ГЇГ® ГЇГ°Г*âûì ïîäóçëГ*Г¬ ГёГ*ГЈГ*ГІГј
  return root->key;//ГўГҐГ°Г*ГїГҐГ¬ ГІГ® Г·ГІГ® ГІГіГ¤Г* Г§Г*ГІГҐГ±Г*ëîñü
}
 
int nnegatives (uzel *root, int init) {
    if (root==NULL) return 0;
    if (root) {
        init += (root)->key < 0;
        if (root->left) 
            init = nnegatives (root->left, init);
        if (root->right)
            init = nnegatives (root->right, init);
    }
 
    return init;
}
 
int nnegatives_left (uzel *root) {
    if (root==NULL) return 0;
    return nnegatives(root->left, 0);
}
 
int  nnegatives_right (uzel *root) {
    if (root==NULL) return 0;
    return nnegatives(root->right, 0);
}
 
uzel* del_tree(uzel *root, int val)//ГіГ¤Г*ëåГ*ГЁГҐ
{
  if (root==0) return 0;//åñëè 0 ГІГ*ГЄ 0
  if (root->key == val) //åñëè Г*Г*øëè ГІГ®
  {
        //ГЅГІГ® ýëåìåГ*ГІ-ëèñò
     if (root->left==0 && root->right==0) 
     {
      delete root;//äîñòГ*òî÷Г*Г® ïðîñòî ГіГ¤Г*ëèòü
      return 0;
     }
     if (root->right==0 && root->left != 0)//åñëè ГҐГ±ГІГј îäèГ* ïîòîìîê ëåâûé 
     {
      uzel *temp = root->left;//ГІГ® ïåðåìåГ*Г*îé ГІГЁГЇГ* "óçåë" Г§Г*ГЇГЁГёГҐГ¬ Г§Г*Г*Г·ГҐГ*ГЁГҐ óçëГ*-ïîòîìêГ* ñëåâГ*
      delete root;
      return temp;
     }
     if (root->left==0 && root->right != 0) //ГІГ® æå äëÿ ГЇГ°Г*âîãî
     {
      uzel *temp = root->right;
      delete root;
      return temp;
     }
     root->key = rightmost(root->left);//òåïåðü Гў ГіГ¤Г*ëÿåìîé ïîçèöèè áóäåò ñòîÿòü ýëåìåГ*ГІ Г±Г*ìûé ГЇГ°Г*âûé ëåâîãî ïîääåðåâГ*
     root->left = del_tree(root->left, root->key);//ГЁГ№ГҐГ¬ Гў ëåâîì ïîääåðåâå ýëåìåГ*ГІ Г± ГіГ¤Г*ëÿåìûì Г§Г*Г*Г·ГҐГ*ГЁГҐГ¬ ГЁ ïðîâîäèì ГҐГЈГ® äåçèГ*ГІГҐГЈГ°Г*öèþ
     return root;
  }
  if (val < root->key)//åñëè Г§Г*Г*Г·ГҐГ*ГЁГҐ ìåГ*ГјГёГҐ òîãî Г·ГІГ® Гў êîðГ*ГҐ ГІГ® âûïîëГ*ГЁГІГј ГўГ±ГҐ Г*åîáõîäèìûå îïåðГ*öèÿ äëÿ ëåâîãî ïîääåðåâГ* 
  {
   root->left = del_tree(root->left, val);
   return root;
  }
  if (val > root->key)//ГІГ® æå äëÿ ГЇГ°Г*âîãî 
  { 
   root->right = del_tree(root->right, val);
   return root;
  }
 return root;
}
 
 
void print_tree(uzel *root)//âûâåñòè äåðåâî
{
 if (root == 0) 
    return;
   print_tree(root->left);
   cout<<root->key<<" ";
   print_tree(root->right);
}
 
      
void print_tree_2(uzel *root)//Г*åðåêóðñèâГ*ûé îáõîä
{
  uzel *dr=root;
  struct stack
  {
    uzel *val;
    struct stack *next;
  }*st=0;
  do
  {
   if (dr != NULL) 
   {
    stack *elem=new stack;
    elem->val=dr;//óçåë Г§Г*ïèñûâГ*ГҐГ¬ Гў Г±ГІГҐГЄ
    if (st==0)
    {
     st=elem;
     st->next=0;
    }
    else
    {
     elem->next=st;//áûâøГ*Гї ãîëîâГ* Г±ГІГ*Г*ГҐГІ âòîðûì ýëåìåГ*òîì
     st=elem;
    }
    cout << dr->key <<" ";
    dr = dr->right;
    }  
    else 
    {                           
     if (st == NULL) break;//åñëè Г±ГІГҐГЄ ГЇГіГ±ГІ
     dr = st->val;
     //èçâëå÷åГ*ГЁГҐ ГЁГ§ Г±ГІГҐГЄГ*
     stack *temp;
     temp=st;
     st=st->next;
     delete temp;
     dr = dr->left;
    }
   }while(true);
}
 
void creator(uzel *root,int x,int y,int c)//âûâîä äåðåâГ* ââèäå äåðåâГ*
{
    if (root == 0) 
    return; 
    COORD coord={x,y}; //êîîðäèГ*Г*ГІГ» x y
    SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),coord);
    y=y+8;
    cout<<root->key;
    creator(root->left,x-c,y,(c/2));
    creator(root->right,x+c,y,(c/2));
}
 
int main()
{
    uzel *trie=0;
    int ch;
    while(0<1)
    {
        system("cls");
        cout<<"Insert into tree----------1"<<endl;
        cout<<"View left-root-right------2"<<endl;
        cout<<"Delete elem---------------3"<<endl;
        cout<<"Find element--------------4"<<endl;
        cout<<"Unrec view----------------5"<<endl;
        cout<<"View tree-----------------6"<<endl;
        cout<<"Left negatives------------7"<<endl;
        cout<<"Right negatives-----------8"<<endl;
        cin>>ch;
        switch(ch)
        {
            case 1:
            {
                system("cls");
                int ins=0;
                cout<<"Put element in tree"<<endl;
                cin>>ins;
                add_tree(&trie,ins);
                break;
            }
            case 2:
            {
                system("cls");
                print_tree(trie);
                getchar();
                break;
            }
            case 3:
            {
                system("cls");
                int del=0;
                cout<<"Elem fo delete"<<endl;
                cin>>del;
                trie=del_tree(trie,del);
                cout<<"If element exist- it deleted"<<endl;
                getchar();
                break;
            }
            case 4:
            {
                system("cls");
                int fin=0;
                cout<<"Insert element to find"<<endl;
                cin>>fin;
                find_tree(trie,fin);
                getchar();
                break;
            }
            case 5:
            {
                system("cls");
                print_tree_2(trie);
                getchar();
                break;
            }
            case 6:
            {
                system("cls");
                creator(trie,40,1,18);
                getchar();
                break;
            }
            case 7:
            {
                system("cls");
                cout<<"Left negatives---"<<nnegatives_left(trie)<<endl;
                getchar();
                break;
            }
            case 8:
            {
                system("cls");
                cout<<"Right negatives---"<<nnegatives_right(trie)<<endl;
                getchar();
                break;
            }
        }
    }
                
    return 0;
}
не сказал бы что похож на ваш.
1
co6ak
Кошковед
407 / 500 / 29
Регистрация: 12.04.2010
Сообщений: 1,392
12.03.2011, 01:22  [ТС] #7
уже гораздо лучше )
благодарю.
тут хотябы нету assert ))
0
fasked
12.03.2011, 13:58
  #8

Не по теме:

Цитата Сообщение от co6ak Посмотреть сообщение
тут хотябы нету assert
Цитата Сообщение от co6ak Посмотреть сообщение
уже гораздо лучше
А я бы с этим поспорил

0
co6ak
Кошковед
407 / 500 / 29
Регистрация: 12.04.2010
Сообщений: 1,392
12.03.2011, 14:02  [ТС] #9
Цитата Сообщение от fasked Посмотреть сообщение

Не по теме:



А я бы с этим поспорил

лично я не имею ни малейшего понятия что такое ассерт.
подфорум ведь для новичков )
0
ForEveR
В астрале
Эксперт С++
7972 / 4734 / 321
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 3
12.03.2011, 14:04 #10
co6ak, Новичкам никто не мешает открыть гугл и посмотреть, что такое assert...
2
fasked
Эксперт С++
4936 / 2516 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
12.03.2011, 14:06 #11
Цитата Сообщение от co6ak Посмотреть сообщение
лично я не имею ни малейшего понятия что такое ассерт
assert это такая проверка на ошибки, если выражение в assert не соответствует ожидаемому, то выбрасывается terminate, например, если программист пошлет в функцию нулевой указатель, это ошибка программиста, а не пользователя, поэтому assert призван облегчить работу программисту, при terminate на консоли отображается строка в которой произошла ошибка и содержимое самого assert, что позволяет быстро исправить ситуацию.
1
co6ak
Кошковед
407 / 500 / 29
Регистрация: 12.04.2010
Сообщений: 1,392
12.03.2011, 14:39  [ТС] #12
Цитата Сообщение от fasked Посмотреть сообщение
assert это такая проверка на ошибки, если выражение в assert не соответствует ожидаемому, то выбрасывается terminate, например, если программист пошлет в функцию нулевой указатель, это ошибка программиста, а не пользователя, поэтому assert призван облегчить работу программисту, при terminate на консоли отображается строка в которой произошла ошибка и содержимое самого assert, что позволяет быстро исправить ситуацию.
теперь понятно.
что то типо try в делфях.
спасиб
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.03.2011, 14:39
Привет! Вот еще темы с ответами:

Бинарные деревья - C++
На с++ с объектно-ориентированным подходом(тоисть с помощю класов) нужно представить арифметическое выражение типа 3*((7+1)/4)+(17-5) в...

бинарные деревья - C++
Вершина двоичного дерева содержит указатель на строку и указатели на правое и левое поддеревья. Строки в дереве упорядочены по возрастанию....

Бинарные деревья - C++
Разработать набор классов упорядоченных бинарных деревьев поиска типов: вещественные числа, двоичные строки(строка из 0 и 1) и линейные...

Бинарные деревья - C++
Компилятор выдаёт ошибки в 9, 10 и 12, 13 строках: invalid conversion from 'int' to 'sNode*' Подскажите пожалуйста, что не так. ...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
12.03.2011, 14:39
Ответ Создать тему
Опции темы

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