the loop I have for this program I need to create averaging grades (0-100) input by the user (min: 0 and max:10) is giving an incorrect number of loops when the user inputs the amount of grades to be processed. Please tell me what's incorrect about my loop and the avg calculations at the end.
Code:
#include <stdio.h>
int main(void)
{
/* Declaration of Variables */
/*--------------------------*/
int grade_counter = 0, counter[11], n = 0, i = 2;
float grade[100], sum = 0.0, average;
char c;
/* Output purpose of program being to calculate averages of user input grades */
/*----------------------------------------------------------------------------*/
printf("\nThis program will calculate the average of the grades you enter!\n");
/* Prompt user to enter total number of grades user wishes to average */
/*--------------------------------------------------------------------*/
while(grade_counter <1 || grade_counter >10)
{
counter[i] = -1;
printf("\nTo begin, please enter the total number of grades to process (1-10): ");
scanf("%d", &grade_counter);
while((c = getchar() != '\n') && c != EOF);
/* Ensure grad is between 1 and 100. If not reprompt. */
/*----------------------------------------------------*/
if(grade_counter <1 || grade_counter >10)
printf("*** Invalid Total Entered ***\n");
else
++counter[grade_counter];
}
/* Instruct user to enter user specified number of grades and then prompt for grade to be averaged */
/*-------------------------------------------------------------------------------------------------*/
printf("\nNow enter the %i grades to be averaged.\n", grade_counter);
printf("\nEnter grade #%i (0-100): ",n+=1);
scanf("%f", &grade[n]);
while(( c=getchar() != '\n') && c != EOF);
while(n = 1, n = grade_counter, ++n, grade_counter++ < 10)
{
sum += grade[n];
printf("\nEnter grade #%i (0-100): ", i++);
scanf("%f", &grade[n]);
while(( c=getchar() != '\n') && c != EOF);
/* Ensure grad is between 1 and 100. If not reprompt. */
/*----------------------------------------------------*/
if(grade[n] <0 || grade[n] >100)
{
printf("*** Invalid Grade Entry ***.\n");
continue;
}
grade_counter++;
}
average = sum / grade_counter;
printf("The average of the %i grades entered is %f.", grade_counter, average);
if(average >= 90)
printf("You have a letter grade of A.\n");
else if (average >=80)
printf("You have a letter grade of B.\n");
else if (average >=70)
printf("You have a letter grade of C.\n");
else if (average >=60)
printf("You have a letter grade of D.\n");
else
printf("You have a letter grade of E.\n");
getchar();
}
Output:
This program will calculate the average of the grades you enter!
To begin, please enter the total number of grades to process (1-10): 7
Now enter the 7 grades to be averaged.
Enter grade #1 (0-100): 90
Enter grade #2 (0-100): 98
Enter grade #3 (0-100): 78
The average of the 12 grades entered is 0.000000.You have a letter grade of E.