2017-12-24 5 views
1

2つの数字を入力する必要があるプログラムを作成しています。コードを実行すると、コードは3番目の数字を入力するように要求しなければなりません。ユーザが0を入力するまでループを続ける必要があります。コード全体を取得できますが、3番目の数字を入力すると、前の番号。たとえば、最初に3を入力し、2回目に4を入力すると、答えは7と考えられますが、入力した最新の数値が使用され、加算されません。番号をループに保存する方法

#include <iostream> 
using namespace std; 


int main() 
{ 
    float c = 1; 

    int e = 3; 
    cout << "Please enter 2 numbers" << endl; 
    float a; 
    float b; 
    cout << "Enter your first number" << endl; 
    cin >> a; 
    cout << "Enter your second number" << endl; 
    cin >> b; 
    float x = a + b; 
    float y = (a + b)/2; 
    cout << "The sum of your 2 numbers is " << x << endl; 
    cout << "The mean of your 2 numbers is " << y << endl; 


    while (true) 
    { 
     if (c > 0) 
     { 
      cout << "Enter the third number" << endl; 
      cin >> c; 
      float newtotal = x + c; 
      cout << "The sum of the new numbers is " << newtotal << endl; 
      cout << "The mean of the new numbers is " << newtotal/e++ << endl; 
     } 
     else 
     { 
      break; 
     } 
    } 



    cin.get(); 
    cin.clear(); 
    cin.ignore(numeric_limits<streamsize>::max(), '\n'); 
} 
+0

あなたがループの内部で何が起こっているか知っていますか? 'if'ブロックでは、正確です。 – Incomputable

+2

ここでyを定義しましたか? – leyanpan

+1

スニペットに含めるのを忘れました。今すぐ編集します – ddddd

答えて

1

私は実際にあなたの声明を完全に理解していません。ここでは、入力したすべての数値の合計と平均を計算したいと仮定します。このように、最も重大な間違いは、newtotalの範囲です。 xは常にabの合計になりますので、newtotalは常にa + b + cになります。ここでcは入力した最後の数字です。

さらに、プログラムでは、終了を示す0が追加されます。これは、次の反復でのみ破損するためです。

そして私は実際には、なぜコードの最後の3行がmain()に必要かわかりません。修正されたコードの

マイバージョン:

#include <iostream> 
using namespace std; 


int main() 
{ 
    int e = 3, a, b, x, c; 
    cout << "Please enter 2 numbers" << endl; 
    cout << "Enter your first number" << endl; 
    cin >> a; 
    cout << "Enter your second number" << endl; 
    cin >> b; 
    x = a + b; 
    cout << "The sum of your 2 numbers is " << x << endl; 
    cout << "The mean of your 2 numbers is " << (float)x/2 << endl; 


    while (true) 
    { 
     cout << "Enter the next number" << endl; 
     cin >> c; 
     x += c; 
     if (c == 0) 
      break; 
     cout << "The sum of the new numbers are " << x << endl; 
     cout << "The mean of the new numbers are " << (float)x/e++ << endl; 
    } 
    // I don't know why you need the code here 
} 
関連する問題