In the previous assignment, we calculated grades based on a m e m o r i z e d overall grade within each of the categories below, as in this example:
In this assignment, we are going to change the specification slightly to make the program a bit smarter. Instead of someone having to remember what their average grade was for each category, we will prompt the user for the number of items within each category (e.g. number of exams, number of labs, etc.), have the user enter individual grades, and have the program calculate the average for the category.
As usual, we will begin by specifying r e q u i r e m e n t s . User responses are shown bold faced.
1. Instead of bombing out if the weights dont add up to 100, use D o - W h i l e L o o p s (do-while.html#dowhile) to prompt the user again for all of the weights until they do add up to 100. A do{...} while loop is the right choice here, because you can test all of the weights at the end of the loop, after each time they have been entered in the loop.
2. Write a function, FindAverage , to do the following. The example refers to the category exam, but you will want your code to work for each category, and hence the category n a m e will need to be a parameter to FindAverage .)
Prompt the user for the number of items in the category:
Please enter the number grades in category exam: 4
Instead of prompting the user for an overall average exam grade, use a loop to read one grade at a time. The grades will be added together (on the fly) to give the grade for that category. For example, after you have asked for the number of exams, youd prompt the user to enter each exam grade and have the program compute the sum. As soon as a category sum is calculated, also print out the average as shown in the sample below:
Please enter the grade for exam 1: 100
Please enter the grade for exam 2: 90
Please enter the grade for exam 3: 80
Please enter the grade for exam 4: 92
Calculated average exam grade = 90.5
Of course you must return the grade to the caller for use in the overall weighted average grade.
A category may have only a single grade, in which case the user will just enter the number of grades as 1.
3. Once you have read in the data for each of the items within a category, youll basically be able to r e u s e the code that you developed in the previous assignment to compute the weighted average and print the final letter grade.
4. Print the final numerical average, t h i s t i m e r o u n d e d t o o n e d e c i m a l p l a c e . If the final average was actually 93.125, you would print 93.1. If the final average was actually 93, you would print 93.0. If the final average was actually 93.175, you would print 93.2.
1. For this assignment, you are expected to start using functions for all aspects of the assignment. For example, it can become tedious in a hurry to write code to prompt for each of exams, labs, homework, etc. when a single function (with parameter named c a t e g o r y ) could be used to avoid repeating yourself. In particular you should write your function to take advantage of our UI class, from U s e r I n p u t : U I (userinput.html#ui)
2. Also beginning with this assignment, it is expected that your work will be presented neatly. That is, we expect the following: