我需要帮助找出我的代码出错的地方。我想重置循环的值,以便它不编译,因为我的输出现在正在使用当前计算中的过去输入值,而我希望输出每次都不同,就好像它是运行代码的第一次。当我不使用while循环时,代码工作正常,但我必须每次都重新运行程序。我希望输出每次都提示一个新输入,但不要在新计算中使用过去的输入。我知道我不是很好解释,但我只是有些失落。一切都有帮助!
这是我的问题:
可以使用给定的系列计算pi的近似值 下面:
pi = 4·[1 - 1/3 + 1/5 - 1/7 + 1/9 ... +( - 1 ^ n)/(2n + 1)]
编写一个C ++程序来计算pi的近似值 这个系列。程序采用输入n确定数字 在pi的近似值中的术语并输出 近似。包含一个允许用户重复此操作的循环 计算新值n直到用户说出他或她想要的 结束该计划。
#include <cstdio>
#include <iostream>
using namespace std;
int main()
{
int n;
double sum=0;
cout << "Enter the number of terms to approximate (or zero to quit):\n";
cin >> n;
if (n == 0)
{
return 0;
}
while (n != 0)
{
{ for(int i=0;i<n;i++)
{
if (i%2==0)
{
sum += 1.0/(2*i+1);
}
else
{
sum += -1.0/(2*i+1);
}
}
cout.setf(ios::showpoint);
cout.precision(3);
cout << "The approximation is " << sum*4 << " using " << n << " terms." << endl;
}
cout << "Enter the number of terms to approximate (or zero to quit):\n";
cin >> n;
}
return 0;
}
这是我的输出:
这是输出应该是:
答案 0 :(得分:2)
在进入sum
循环之前,您不会重置for
。只需添加
sum=0;
在for
行之前。
答案 1 :(得分:0)
请注意2.67 = 6.67 - 4.00。
您希望自己的程序为sum
的多个值计算n
。
必须在while
循环内的每次计算开始时将总和初始化为0。
实际上,它甚至应该在那里宣布。
答案 2 :(得分:0)
C ++并不要求你在函数的开头定义变量,所以写它是完全合法的:
while (n != 0)
{
double sum = 0.0;
这可以解决您的问题。或者,如果您想在函数顶部保留sum的声明,只需将代码更改为
即可while (n != 0)
{
sum = 0.0;