#include<iostream>
#include<cmath>
using namespace std;
double bisection(double errorVal, double userNum){
double upper=userNum, lower=0;
double mid=(lower+upper)/2.0;;
while(mid*mid!=userNum){
double mid=(lower+upper)/2.0;
if(mid*mid>userNum){
upper=mid;
} else {
lower=mid;
}
}
return mid;
}
int main(){
double errorVal=0, userNum=0;
std::cout<<"Please enter a number (larger than 0) to calculate its square root, and the desired margin of error."<<std::endl;
std::cin>>userNum>>errorVal;
bisection(errorVal,userNum);
std::cout<<"The calculated result is "<<bisection(errorVal,userNum)<<". The error is "<<abs(bisection(errorVal,userNum)-sqrt(userNum))<<"."<<std::endl;
}
这是一个程序,我已经写出了通过平分方法输入的任意数字的平方根。我必须在这里做错事,因为一旦我输入两个输入参数,我就没有得到任何输出,这个过程就会停滞在那里。使用平分法找出数字的平方根的问题
我也想知道如何正确实施errorVal
,以指定允许的误差范围。谢谢。
还有一件事我忘了提:'请输入一个数字(大于0)',你试图在0和1之间的输入数字,(0,1)?你可能会发现自己陷入了循环;-) – Stefan