【发布时间】:2016-02-24 20:03:20
【问题描述】:
我正在尝试使用 for 循环来近似 pi。用户输入迭代次数 n,并且程序应该随着每次额外的迭代获得越来越准确的 pi 值。我有一个嵌套的“if”控制结构来检查“i”是偶数还是奇数。但是,当我的循环在第一次运行后重复时,我的 pi 值没有改变。 Pi 在循环中保持在 1,最终输出为 4。我必须使用近似级数:
pi = 4[ 1 - 1/3 + 1/5 +...+ 1/(2n-1) + 1/(2n+1) ]。
我做错了什么?
int _tmain(int argc, _TCHAR* argv[])
{
double pi = 0;
long i;
int n;
cout << "Enter the value of n: "; //prompt for input
cin >> n; //store input in "n"
cout << endl; //end line
for (i = 0; i < n; i++)
{
if (i % 2 == 0) //if even
pi = pi + (1 / (2 * i + 1));
else //if odd
pi = pi - (1 / (2 * i + 1));
}
pi = 4 * pi; //multiply by 4
cout << endl << "pi = " << pi << endl; //display result
system("Pause"); //pause program
return 0; //close program
【问题讨论】:
-
整数除法。
x / y是0用于具有x < y的整数对。只有i = 0真正贡献于pi。 -
一些代码的东西:a) 不要习惯
_t的东西,最好完全忘记它。 b) 缩进。 -
基于示例系列,for 循环应该是 |对于 (i = 0; i = 0; i--) | .
-
@DavidHeffernan,这并不是真正的重复,因为整数除法不是问题的一部分。这是一个代码分析/调试问题。
-
@ThomasMcLeod 我可以在问题中看到整数除法
标签: c++ loops series approximation