2016-07-06 11 views
1

私のコードがどこに間違っているか調べるのに助けが必要です。私は出力が現在の計算で過去の入力値を使用しているのに対し、コードを実行しているときには出力が毎回異なるようにコンパイルしないようにループの値をリセットしたい。 whileループを使用しないときはコードが正常に動作しますが、そのたびにプログラムを再実行する必要があります。私は毎回新しい入力を促す出力をしたいが、新しい計算の過去の入力を使用しない。私はそれをとてもうまく説明していないことを知っているが、私は一種の失われている。何か助けて! 1/3 + 1/5 - - 1forループの値をリセットするには?

PI = 4・[1:PIの近似値は以下 を与えシリーズを使用して計算することができる

これは私の問題です/ 7 + 1/9 ... +(-1^n)/(2n + 1)]

このシリーズの を使用して、piの近似値を計算するC++プログラムを作成します。プログラムは、PIの値の近似値における用語の数 を決定し、近似値を出力する入力Nを取ります。ユーザーが新しい値のため、この 計算を繰り返すことができます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; 
} 

これが私の出力です:

これは出力がどうあるべきかされています

答えて

1

あなたはforループに入る前sumをリセットしません。 。追加するだけで

sum=0; 

の前にfor行が追加されます。 4.00 -

0

お知らせ2.67 = 6.67います。

あなたは、あなたのプログラムがnのいくつかの値のためsumを計算したいです。 whileループ内の各計算の開始時に合計を0に初期化する必要があります。

実は、それもそこに宣言する必要があります。

0

C++は、関数の先頭で変数を定義する必要はありませんので、書くことは完全に合法である:

while (n != 0) 
{ 
    double sum = 0.0; 

これはあなたの問題を解決するだろう。あなたは、関数の先頭に和の宣言を保持する場合あるいは、単に

while (n != 0) 
{ 
    sum = 0.0; 
にコードを変更
関連する問題