Проблема, которую я не могу решить, - это то, как я нахожу sqrt чисел между 0 и 1. После этого я думаю, что все работает. Единственными номерами ввода, которые приводят к сбою этой программы, являются номера между 0 (не включены) и 1 (не включены)Попытка найти sqrt чисел между 0 и 1 без функции sqrt
Любая помощь?
#include <iostream>
#include <cmath>
#include <cassert>
#include <stdlib.h>
#include <cmath>
using namespace std;
double squareroot(double x) /* computes the square root of x */
{
assert(x >= 0); /* make sure x is not negative*/
if (x==0) return 0;
/* the sqrt must be between xhi and xlo */
double xhi = x;
double xlo = 0;
double guess = x/2;
/* We stop when guess*guess-x is very small */
while (abs(guess*guess-x) > 0.00001)
{
if (guess*guess > x) xhi = guess;
else xlo = guess;
guess = (xhi + xlo)/2;
}
return guess;
}
/* Test Stub */
int main()
{
double testvalue;
cout << "\n Enter a TestValue= " ;
cin >> testvalue;
cout << endl;
double testresult = squareroot(testvalue);
cout << "\n Square Root= " << testresult << "\n" ;
}
переполнение стека не вашей личной справочной службы. Поэтому я бы сказал, Нет! –
Если программа выйдет из строя, попробовал ли вы запустить ее в отладчике, чтобы поймать сбой? В противном случае, вы пробовали переходить через код, строко за строкой, в отладчике? –
Это не сбой. Я попробовал отладить его. Он работает очень хорошо, но в какой-то момент я что-то упускаю. И это включает sqrt чисел от 0 до 1 (например, 0,4 0,1 0,7) – Marme