2016-10-19 7 views
0

ユーザーに入力したいクイズの数と、グレードを保存し、平均を計算するプログラムがあります。グレードは0から100の間でなければなりません。しかし、100を超えるグレードを入力すると、平均が間​​違っています。合計をリセットしません。私が120と入力して、成績を再入力するよう促しますが、平均を計算するときに120を使用します。どのようにリセットするのですか?平均を計算するときに合計をリセットする

注:書式を変更したくない(whileループを使用するなど)。

#include <iostream> 
using namespace std; 
int main(){ 
    int n, i; 
    float num[13], sum=0.0, average; 
    cout << "Enter the numbers of quizzes from 1-13: "; 
    cin >> n; 

while (n < 1 || n > 13) 
{ 
    cout << "You must enter a number from 1 - 13." << endl; 
    cout << "Enter the number of quizzes you would like to input(1-13): “; 
    cin >> n; 

} 


for(i=0; i<n; ++i) 
    { 
     cout << i+1 << ". Enter number: "; 
     cin >> num[i]; 
     sum+=num[i]; 


    while (num[i] < 0 || num[i] > 100) 
    { 
    cout << “You must enter a number between 0 and 100. Re enter scores.”; 
     cout << i+1 << ". Enter number: "; 
     cin >> num[i]; 
    } 
    } 

    average=sum/n; 
    cout << "Average = " << average; 
    return 0; 
} 

答えて

0

ちょうどwhile (num[i] < 0 || num[i] > 100) ...ループの後ろsum+=num[i]を入れて!

このようにして、有効な数字のみを集計します。

for(i=0; i<n; ++i) 
{ 
    cout << i+1 << ". Enter number: "; 
    cin >> num[i]; 
    //sum+=num[i]; remove here !! 

    while (num[i] < 0 || num[i] > 100) 
    { 
    cout << “You must enter a number between 0 and 100. Re enter scores.”; 
    cout << i+1 << ". Enter number: "; 
    cin >> num[i]; 
    } 

    sum+=num[i]; // <- insert here 
} 
+0

ありがとうございました。今明らかです。 – Joe

0
for(i=0; i<n; ++i) 
    { 
     cout << i+1 << ". Enter number: "; 
     cin >> num[i]; 

    while (num[i] < 0 || num[i] > 100) 
    { 
    cout << “You must enter a number between 0 and 100. Re enter scores.”; 
     cout << i+1 << ". Enter number: "; 
     cin >> num[i]; 
    } 
    } 


    sum+=num[i]; 
    average=sum/n; 
    cout << "Average = " << average; 
    return 0; 
} 
+0

ありがとうございました! – Joe