#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