C Programming Write a C program that calculates and prints the average of severa
ID: 3891481 • Letter: C
Question
C Programming
Write a C program that calculates and prints the average of several grades entered by the user.
Please put "//Comments telling what each function does/displays"
The program should first prompt the user to enter the number of grades to process (at least 2 grades must be entered by user!) .
It should then prompt the user for each grade. As each grade is entered, the program should ensure that the grades entered are in the grade range of zero to 100. If the grade is not in that range, an error message should be displayed (as shown below), and the user should be re-prompted for a grade. Any bad grades entered should not be included in the average calculation.
Once all values are entered, the program should calculate and print the average of all of the positive values entered, rounded to the nearest whole number.
At the end display a message for the appropriate letter grade as shown here:
90 - 100: A
80 - 89: B
70 - 79: C
60 - 69: D
0 - 59: F
This program will feature the if statement as well as programming techniques for data validation. I call it a trap loop. It traps the user into entering valid data.
The dialog with the user should be as follows:
This program calculates the average of as many grades you wish to enter.
First, enter the number of grades to process: 4
Now enter the 4 grades to be averaged.
Enter grade #1: 100
Enter grade #2: 80
Enter grade #3: -20
*** Invalid entry. Grade must be 0 to 100. ***
Enter grade #3: 25
Enter grade #4: 54
The average of the 4 grades entered is 65
You have a letter grade of D
Recall: The blue text represents the "output" from your program and is shown for clarity only here. It is not required that your output be in this color. (Do not even attempt to try!). Also note that what the user types in is indicated by the bold black area above; Again, for clarity only.
A user-friendly message of your choosing should precede the dialog and explain the program (you can change the first sentence if you wish).
Notice the trap in grade #3 in the above.
Hints:
This program requires variables of type int and float.
Use printf and scanf statements to first prompt the user for the number of grades to be processed.
This program requires loop structure(s) (for, while or do -- your choice).
The loop requires some a printf and scanf statement to prompt user for a grade.
The loop also requires a selection structure (if, or if else) statement to check for bad data values.
The selection structure requires a printf statement to output error message if improper grade.
The program requires an accumulator to keep track of the sum of good grades entered.
Once all grades are entered, determine the average rounded to the nearest whole number. A printf statement will then be used to output the average.
Use another selection structure to determine the appropriate letter grade as described above. The selection structure will contain a printf statement to output the letter grade.
Explanation / Answer
Solution:
#include <stdio.h>
// Calculating the grade based on the scores.
void calculateGrade(float score){
if(90<=score && score<=100)
printf("You have a letter grade of A.");
else if(80<=score && score<=89)
printf("You have a letter grade of B.");
else if(70<=score && score<=79)
printf("You have a letter grade of C.");
else if(60<=score && score<=69)
printf("You have a letter grade of D.");
else
printf("You have a letter grade of F.");
}
int main()
{
// Declaring the variables.
int n, i;
float num[100], sum = 0.0, average;
// Asking for the total number of grades to be taken
printf("Enter the numbers of elements: ");
scanf("%d", &n);
// Validating the total number of grades to be taken. The index cant be negative nor 0
while (n > 100 || n <= 0)
{
printf("Error! number should in range of (1 to 100). ");
printf("Enter the number again: ");
scanf("%d", &n);
}
// Taking the grades and storing it into the array iff they are in the range of 0 to 100
for(i = 0; i < n; ++i)
{
printf("Enter grade #%d: ", i+1);
scanf("%f", &num[i]);
// Validating the grades/scores it cant be less than 0 and greater than 100
if(num[i]<0 || num[i]>100){
printf("*** Invalid entry. Grade must be 0 to 100. *** ");
i--;
continue;
}else{
// Summing up all the scores
sum += num[i];
}
}
// Calculating the average here
average = ceil(sum / n);
printf("The average of the %d grades entered is %.2f ", n,average);
calculateGrade(average); //Calling this function to display the grade based on the score acquired.
return 0;
}
Sample Run:
Enter the numbers of elements: 100 4
Enter grade #1: 100
Enter grade #2: 80
Enter grade #3: -20
*** Invalid entry. Grade must be 0 to 100. ***
Enter grade #3: 25
Enter grade #4: 54
The average of the 4 grades entered is 65.00
You have a letter grade of D.
Note: If you face any issue, please do comment below before giving any negative review. If you like dit then don't forget to give a big thumbs up.
Related Questions
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.