2016-04-10 7 views
-5

を実行していない「のため」私が実行しようとしているとき、それは私にこれを表示され、十分な形で繰り返されない:私はプログラムを実行し、ループのためにそれを実行しようとしているときだけでなく

Enter a number: 
5.6 
Enter a number: 
Enter a number: 
Enter a number: 
Enter a number: 
Enter a number: 
Enter a number: 
Enter a number: 
Enter a number: 
Enter a number: 

この問題に関する情報を検索しようとしましたが、何も見つかりませんでした。私はそれが愚かな質問であることを知っていますが、どこを向けるべきか分かりません。助けに感謝します。 私はあなたに私のコードを左:

#include <iostream> 
using namespace std; 
int main (void){ 
    int num, sum; 
    float average; 
    for(int i=0; i<10; i++){ 
     cout << " Enter a number: " <<endl; 
     cin >>i; 
     sum += num; 
    } 
     average = num/10; 
     cout << " The total average is:\n " << media <<endl; 
} 
+0

;'実際に成功しました。 –

+0

使用前に 'sum'または' num'を初期化していないため、未定義の動作が発生します。 –

+2

また、 'cin >> i;ではなく' cin >> num; 'を意味しました。 –

答えて

0

cinは、そのフォーマットされた入力操作を失敗しました。整数が必要ですが、浮動小数点数を入力しました。したがって、それは失敗しました。入力をfloatまたはdoubleに変更します。

あなたのコードでより多くの問題のカップル:

  • あなたはint main()、むしろint main(void)を書くことができます。 voidは...
  • は常にcin障害をチェックし、

修正されたコード、必要であれば、エラーを報告し、

  • 時々使用前に変数を初期化し、ここでは非常に有用ではありません

    #include <iostream> 
    using namespace std; 
    int main(){ 
        int num = 0, sum = 0; 
        float average = 0; 
        for(int i=0; i<10; i++){ 
         cout << " Enter a number: " <<endl; 
         if(!(cin >> num)){ //you can also use a while loop to force requirement of proper input 
          cin.clear(); 
          cin.ignore(100000, '\n'); 
          // you can print an error message here 
         } 
         else 
          sum += num; 
        } 
         average = static_cast<float>(sum)/10; 
         cout << " The total average is:\n " << average <<endl; 
    } 
    

    Why would we call cin.clear() and cin.ignore() after reading input?

  • +0

    'int main(void)'には何も問題はありません。 – juanchopanza

    +0

    @WhiZTiM!cin >> num、これはどうしますか?しない! >>より優先順位が高いですか? –

    +0

    除算を使う前に 'sum'を' float'にキャストしてください: 'average =(float)sum/10;' –

    0

    正しくない3つのことがあります。

    すべての
    • まず、あなたは初期化する必要があり合計を使用する前に、のようなので、int型の合計= 0;
    • もう1つは、入力した数値を変数に保存する必要があることです。ループのイテレータであるため、iをその変数に使用できません。したがって、numを使用できます。
    • 最後に、メディアはあなたのプログラムで意味を持ちません。私はあなたが平均を使用することを意味することを知っています。

    これらのすべてを修正した後、あなたのプログラムは、この1のようになります。あなたは>> CIN `場合、私は確認されません

    #include <iostream> 
    using namespace std; 
    int main (void){ 
        int num, sum=0; 
        float average; 
        for(int i=0; i<10; i++){ 
         cout << " Enter a number: "; 
         cin >>num; 
         sum += num; 
        } 
        average = num/10; 
        cout << " The total average is:\n " << average <<endl; 
        system("pause"); 
    }