Write a program which reads student names, social security numbers, and test scores from an input file named infile. The program then computes a weighted average, finds the appropriate letter grade, and displays the formatted output specified below to the screen. The information reading should be controlled by a while Loop. Termination should occur after the input file is empty. If a student has a grade of "A" (0.90 or more) and each score is at least 0.85, then a mark of distinction should be entered in the output. The range will be computed by the difference of the highest and lowest grade for a student.
Readings: Building Blocks: Types, Classes, and Objects, While loop, File Stream I/O
Specific Instructions:
The student name should be read into an array of ten characters. The Social Security Number should be read into an array of nine characters. The test scores should be read in to double variables. After reading each student's data the sentinel value should be checked to see if the program should process or terminate. The average should be weighted so that each of the first three scores is 20% of the average while the last is 40%. At the end, display the Lowest and Highest averages.
The program should be written in modules. The main() function will have its own module, and the remaining functions will reside in the other modules. The main()should do almost noprocessing, it should simply call functions to do whatever it needs, such as read(), display(), etc. It will basically be a while loop with a condition and a series of function calls in the body of the loop.
Contents of infile:
SMITH 111112222 60.5 90.0 75.8 86.0
CAMPANELLA 222115555 70.4 100.0 98.8 95.0
ADAMS 032114598 100.0 95.0 100.0 90.0
VALDEZ 888761122 97.0 87.2 60.7 74.0
WASHINGTON 040512177 88.2 68.0 84.5 93.1
THOMASON 011234486 60.3 63.8 55.6 50.0
EVANS 002124567 89.8 93.6 91.1 92.6
Put several more data lines here
Format of output:
NAME SSNUMBER AVERAGE GRADE DISTINCTION RANGE
---- --------- ------- ----- ----------- -----
SMITH 111-11-2222 79.7 C NO 29.5
CAMPANELLA 222-11-5555 91.8 A NO 29.6
ADAMS 032-11-4598 95.0 A YES 10.0