1. ホーム
  2. c++

[解決済み] カウンター変数:どのように機能するのですか?

2022-02-17 23:07:36

質問事項

10個の整数の平均を計算するソフトを作りました。これはそのコードである。

// Algorithm for computing the average of the grades of a class with the controlled iteration of a counter

#include <iostream>

using namespace std;

int main()
{
    int total,          // sum of all grades
        gradeCounter,   // n° of inputted grades
        grade,          // a single vote
        average;        // average of grades

        // initialization phase
        total = 0;              //sets the total to zero
        gradeCounter = 1;       //prepares the counter

    // elaboration phase
    while ( gradeCounter <= 10 ) { // 10 times cycle    
        cout << "Enter grade: "; // input prompt
        cin >> grade;            // input grade
        total = total + grade;   // adds the grade to the total
        gradeCounter = gradeCounter + 1; // increases the counter
    }

    // end phase
    average = total / gradeCounter;
    cout << "The class average is " << average << endl;

    return 0;
}

さて、私が考えていたのは average = total / gradeCounter; に格納されている最後の変数が動作します。 gradeCounter は10です。 average = total / 10; が本当の平均値です。なぜこのような不一致が起こるのか、理解できません。 誰か説明してくれませんか?

どのように解決するのですか?

実際に起こっていることは、whileループを実行するたびに gradeCounter は、ループの実行回数より1回多くなっています(これは、初期化された gradeCounter を1にしてからループを開始します)。この問題を解決するには、次のいずれかの方法をとります。

1)

average = total / (gradeCounter-1);

2)

gradeCounter = 0;
while ( gradeCounter < 10 ) {
    cout << "Enter grade: ";
    cin >> grade;
    total = total + grade; 
    gradeCounter = gradeCounter + 1;
}