【发布时间】:2016-02-08 06:33:42
【问题描述】:
程序拒绝产生结果是因为它无法进入循环吗?
请查看以下代码以获取更多信息。
#include <iostream>
#include <cmath>
#include <iomanip>
using namespace std;
int main()
{
double x, squareroot, oldsquareroot, counter=0;
cout << "Enter a positive number: " ;
cin >> x ;
{
for (oldsquareroot = x/2; abs(squareroot-oldsquareroot) >= 1e-9 && abs(squareroot - oldsquareroot)>=(1E-8*x);counter++ )
{
squareroot = (squareroot+x/squareroot)/2;
}
}
cout << setprecision(15);
cout << "The value of the squareroot is:" << squareroot << endl;
cout << "The number of interations required for the computation is:" << counter << endl;
return 0;
}
【问题讨论】:
-
描述你得到的输出,即什么都没有,不是你期望的等等。另外,使用调试器检查是否进入了循环。您不需要整个社区来检查程序执行情况。附带说明:比较双精度值,尤其是这样的小值,对于条件表达式来说是一个非常糟糕的主意。
标签: c++ algorithm for-loop math numerical-methods