Modify the Test Scores program from the code below Section into a class grade book that includes a class of up to 20 students and 3 test grades. Each test is read in as a separate file, so 3 Test files are required.
The students' grades should be kept in an array.
Once all three test scores are read in, calculate each student's average and grade for the class.
Also print a report of the each student's test grades, average and final grade as a table, and then print the averages of each Test and overall Test Average, as well as highest Test Grade of all Tests and the student with the highest class grade.
#include
#include
#include
using namespace std;
void readData(ifstream& inputFile, int list[], int size);
void holdscrn( );
void print(int list[], int size);
int main()
{
int scores[8] = {0};
ifstream infile;
infile.open("Test.txt");
if (!infile) // need to add ! for not successful open
{
cout << "Cannot open the input file. Program terminates!"
<< endl;
holdscrn( ); // Hold screen before exit
return 1;
}
readData(infile, scores, 8);
print(scores, 8);
cout << endl;
infile.close();
holdscrn( ); // Hold screen before exit
return 0;
}
void readData(ifstream& inputFile, int list[], int size)
{
int score;
int index;
inputFile >> score;
while (inputFile)
{
index = score / 25;
if (index == size)
index--;
if (index < size)
list[index]++;
inputFile >> score;
}
return;
}
void print(int list[], int size)
{
int range;
int lowRange = 0;
int upperRange = 24;
cout << " Range # of Students" << endl;
for (range = 0; range < size; range++)
{
cout << setw(3) << lowRange << " - "
<< upperRange << setw(15)
<< list[range] << endl;
lowRange = upperRange + 1;
upperRange = upperRange + 25;
if (range == size - 2)
upperRange++;
}
cout << endl;
return;
}
void holdscrn( ) // void function to hold screen open before exit
{
char holdscreen;
cout << "\n\n\tEnter one character and press return to exit program: ";
cin >> holdscreen;
return;
}