Здравствуйте , в коде есть 1 ошибка , которая почему-то у меня не ловится отладчиком ,
если кто подскажет что не так , буду премного благодарен .
Cобственно код
В общем программа работает , даже всё верно считает , но
есть тип примеров , когда программа попусту виснет .
Например если ввести действия с 2-мя отрицательными числами
f() = -2*(-2)
После ввода данного примера всё виснет . Пытался отладчиком
поймать ошибку , но он её не находит и выводит 4 (собственно что и должно быть)
Скорее всего ошибка в строчке node * p = new node (процедура Create_tree ) , т.к.
если написать до этой строчки что-то типа cout << "1" то 1 на экране появится(кстати от раза
к разу их то 1 то 4 ) , если же после , то нет .
Но что неправильного в этой строчке мне непонятно .
Заранее спасибо .
если кто подскажет что не так , буду премного благодарен .
Cобственно код
В общем программа работает , даже всё верно считает , но
есть тип примеров , когда программа попусту виснет .
Например если ввести действия с 2-мя отрицательными числами
f() = -2*(-2)
После ввода данного примера всё виснет . Пытался отладчиком
поймать ошибку , но он её не находит и выводит 4 (собственно что и должно быть)
Скорее всего ошибка в строчке node * p = new node (процедура Create_tree ) , т.к.
если написать до этой строчки что-то типа cout << "1" то 1 на экране появится(кстати от раза
к разу их то 1 то 4 ) , если же после , то нет .
Но что неправильного в этой строчке мне непонятно .
Заранее спасибо .
ввожу например -2*5 и он нигде не прерывается , а на консоли горит -10 , а если просто запускаю , то просто виснет .
Я с таким вообще впервые сталкиваюсь .
Сделай в коде
printf ("метка 1");
printf ("метка 2");
...
выявишь фрагмент кода, на которой виснет.
очень мало каких ошибок не найти им. Тебе все равно это понадобится.
ставь контрольные значения, смотри на каждом шаге.
Я надеюсь у тебя вижал студиа?
Mr.Freedom да , 2008 студия
Цифра 1 горит а 2 нет , то есть что-то не так с root->value наверное .
Можешь выложить бинарник, который получился, для скачивания?
Интересно будет посмотреть, в чём будет ошибка.
И лучше два - один в режиме Debug, другой - в режиме Release (переключатель где-то вверху на панели инструментов).
А лучше еще дополнительно - саму папку с проектом в 2010.
не правильно прописаны комманды delete []p->left и delete[] p->right . Вместо них думаю нужно просто delete (p->right) и delete (p->left) .
Если заменить на:
int s=4;
if (error == false)
cout << "Результат : " << s << endl ;
else
cout << "Неккоректный ввод" << endl ;
то появляется точно такая же ошибка.
Теперь о том, что это за ошибка. Отладчик windbg выдал такое:
читать дальше
Беглое прохождение по стеку ничего не дало, причину такого странного поведения пока не знаю.
вместо cout << "Результат : " << s << endl строку printf("Результат : %f\n",root->value) ; то всё отлично работает . Спасибо .