Problem: You have been hired by a school district to write a program that will grade multiple choice exams and provide
a report listing the grade (numeric and letter) for each student, the problems missed for each student (including the
student’s answer and correct answer) as well as a summary for the entire class giving the mean, median and mode of
the exams. All arrays used must be created dynamically and only pointer notation may be used to interact with the
Input: The correct answers for the exam will be in a file named answers.txt. The first line of the file will be the number
of questions to grade (maximum 100). Each subsequent line will contain the answer to sequential questions on the
exam. You do not have to validate the exam answers file. It will contain exactly as many answers as indicated on the
first line of the file, and all answers in the file will be a letter A-E.
The student exams will be in a file named exams.txt. Each line of the file will contain data for a unique student. Each
line of the file will begin with a student ID (a 10-digit number – can be treated as a string) followed by the student’s
answers for the exam. Each answer will be separated by a space and there will be exactly as many answers as there are
questions listed in answers.txt.
Output: All numeric values should be rounded to 2 decimal places. Letter grades follow the traditional grading system
(no plus-minus, A=90 – 100, B=80-89.99, etc.). Numerical grades are calculated by dividing the number of correct
answers by the total number of answers and converting to a percentage.
A file named exam_report.txt should be created to hold the output from grading the exams. For each student, the
following information should be written to the file (each bullet represents a separate line):
Exam questions missed (numeric – separated by spaces)
Incorrect answers given by student (line up each answer with the ones digit of the question number in the
Correct answer (line up each answer with the ones digit of the question number in the previous line)
After each student report has been generated to the file, create a summary for the exam stating the mean, median and
mode of the exams. If there is more than one mode, then list all modes separated by a comma and a space (e.g. 65, 70,
75). Please follow the format displayed in the sample output file for the statistical summary.
Functions: Your program should contain functions to do each main task. There should be minimal code in the main
function other than function calls. Do not chain your functions together (one function calls the next function which calls
the next function, etc.)
A sample of each type of file is attached to the project listing in eLearning.