成績を記録し、それらを配列に入れ、平均を出さなければならない宿題の問題があります。プログラムは、成績として負の数が与えられるまで、または配列が満たされるまで、入力を求めることになっています。これまでのところ、負の数を与えるまでプログラムをループさせることができ、正しい平均が計算されます。私が理解できないのは、配列がいっぱいになったときにループを終了する方法です。私のコード:
#include <stdio.h>
/* function main begins program execution */
int main( void )
{ int counter; /* number of grade to be entered next */
int grade; /* grade value */
int total; /* sum of grades input by user */
double average; /* average of grades */
/* initialization phase */
total = 0; /* initialize total */
counter = 0; /* initialize counter */
grade = 0; /* initialize grade */
printf( "Input a negative number when done entering grades.\n" );
/* processing phase */
#define MAX_GRADES 20
int grades [MAX_GRADES];
while ( counter < MAX_GRADES) {
while ( grade >= 0 ) { /* loop until negative given */
printf( "Enter grade: " ); /* prompt for input */
scanf( "%d", &grade ); /* read grade from user */
if (grade >= 0) {
if (grade > 100)
printf( "Grade is greater than 100. Please input grade again.\n" );
else {
grades[counter] = grade;
total = total + grade; /* add grade to total */
counter = counter + 1;
} /* end else */
} /* end if */
} /* end while */
} /* end while */
/* termination phase */
average = total /(double) counter; /* integer division */
printf( "Class average is %f\n", average ); /* display result */
return 0; /* indicate program ended successfully */
} /* end function main */