如何重置for循环中的值?

时间:2016-07-06 05:06:58

标签: c++ loops c++11

我需要帮助找出我的代码出错的地方。我想重置循环的值,以便它不编译,因为我的输出现在正在使用当前计算中的过去输入值,而我希望输出每次都不同,就好像它是运行代码的第一次。当我不使用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;
}

这是我的输出:

这是输出应该是:

3 个答案:

答案 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;