Необработанное исключение по адресу 0x007629C4 в ConsoleApplication1.exe: 0xC0000094: Integer division by zero
при запуске выдает ошибку деления на 0 в строке int sr = summa(t) / kol(t);
задачей было определить, верно ли, что сумма элементов дерева больших среднего арифметического листьев дерева равна заданному числу N.
Вот сам код
struct tree
{
int info;
tree* l;
tree* r;
};
void add(tree* t, int x)
{
tree* tek = t;
tree* prev = NULL;
while (tek != NULL)
{
prev = tek;
if (x < tek->info)
tek = tek->l;
else
tek = tek->r;
}
tree* l = new tree;
l->info = x;
l->l = NULL;
l->r = NULL;
if (x < prev->info)
prev->l = l;
if (x > prev->info)
prev->r = l;
}
int summa(tree* t)
{
if (t == NULL)
return 0;
else if (t->l == NULL && t->r == NULL)
return t->info;
else
return summa(t->l) + summa(t->r);
};
int kol(tree* t)
{
if (t == NULL)
return 0;
else
if (t->l == NULL && t->r == NULL)
return 1;
else
return kol(t->l) + kol(t->r);
}
int summbol(tree* t)
{
int sr = summa(t) / kol(t);
if (t == NULL)
return 0;
else
if (t->info > sr)
return t->info + summbol(t->r) + summbol(t->r);
else
return summbol(t->r) + summbol(t->r);
}
void print(tree* t)
{
cout << t->info;
print(t->l);
print(t->r);
}
int main()
{
tree* t = new tree;
int x;
cin >> x;
t->info = x;
t->l = NULL;
t->r = NULL;
cin >> x;
while (x)
{
add(t, x);
cin >> x;
}
cout << summa(t) << " " << kol(t)<<endl;
int n;
cout << "N = ";
cin >> n;
if (n == summbol(t))
cout << endl<< "verno";
else
cout << endl << "net";
return 0;
}