Answered! Assignment: Write a program to calculate students’ average test scores and their grades…

Assignment:

Write a program to calculate students’ average test scores and their grades.

You may assume the following input data: Create a text file called arrays.txt with this data.

Johnson 85 83 77 91 76

Aniston 80 90 95 93 48

Cooper 78 82 22 90 73

Gupta 92 83 30 69 87

Blair 23 45 96 38 59

Clark 60 85 45 39 67

Kennedy 77 31 52 74 83

Bronson 93 94 89 77 97

Sunny 79 85 28 93 82

Smith 85 72 49 75 63

Design Considerations:

1. No global variables. All variables must be inside main().

2. Use three arrays: a one-dimensional array to store the students’ names, a (parallel)

two-dimensional array to store the test scores, and a parallel one-dimensional

array to store grades.

3. Your program must contain at least the following functions: a function to read and

store the data into two arrays, a function to calculate the average test score and

grade, and a function to output the results. Have your program also output the

class average.

4. You must read from the input file into the arrays. Make sure to pass the arrays

and the file stream variable (if needed) to the functions by reference

Expert Answer

 Here is your program: –

#include<iostream>
#include<fstream>
#include<string>
#include<iomanip>
using namespace std;

const int MAX = 50;
// a function called GetData to read and store data into two arrays,
void GetData(ifstream& infile,string name[],int scores[][5],int& n)
{
n = 0;
int i=0;
int j=0;
while(!infile.eof())
{
infile >> name[i];
for(int j=0; j<5; j++)
infile >> scores[i][j];
i++;
}
n = i;
}

char determineGrade(double avg1)
{
int avg = (int) avg1;
if(avg>=90 && avg<=100)
return ‘A’;
else if(avg>=80 && avg<=89)
return ‘B’;
if(avg>=70 && avg<=79)
return ‘C’;
if(avg>=60 && avg<=69)
return ‘D’;
if(avg>=50 && avg<=59)
return ‘F’;
}

// a function called Average that is used to calculate the average test score and grade,
void Average(int a[][5],char grade[],double avg[],int no_of_students)
{
for(int i=0; i<no_of_students; i++)
{
double sum =0;
for(int j=0; j<5; j++)
sum+= a[i][j];
avg[i] = sum/static_cast<double> (5);
grade[i] = determineGrade(avg[i]);
}
}

// function called PrintResults to output the results.
void PrintResults(string name[],double avg[],int scores[][5],char grade[],int n)
{
cout<<left<<setw(30)<<“Name and Marks”;
cout<<right<<setw(40)<<“Average (Grades)”<<endl;
for(int i=0; i<n; i++){
cout << left << setw(10)<< name[i];
for(int k=0; k<5; k++)
cout << right << setw(8) << scores[i][k];
cout << setw(8) << avg[i];
cout << setw(8) << grade[i];
cout << endl;
}
double sum = 0;
for(int i=0; i<n; i++){
sum = sum + avg[i];
}
double classAvg = sum /static_cast<double>(n);

cout<<“nn Class Average: “<<classAvg<<endl;

}

int main()
{
// a one-dimensional array to store the students? names,
string name[MAX];
// a (parallel) two-dimensional array to store the test scores,
int scores[MAX][5];
// a parallel one-dimensional array to store grades.
char grade[MAX];
int no_of_students;
double avg[MAX];

ifstream infile(“StudentData.txt”);

if(!infile)
{
cout <<“unable to open file.so exiting from program” << endl;
return 0;
}

GetData(infile, name, scores, no_of_students);
infile.close();
Average(scores, grade, avg, no_of_students);
PrintResults(name,avg,scores,grade,no_of_students);

return 0;
}

Output: –

Name and Marks Average (Grades)
Johnson 85 83 77 91 76 82.4 B
Aniston 80 90 95 93 48 81.2 B
Cooper 78 82 22 90 73 69 D
Gupta 92 83 30 69 87 72.2 C
Blair 23 45 96 38 59 52.2 F
Clark 60 85 45 39 67 59.2 F
Kennedy 77 31 52 74 83 63.4 D
Bronson 93 94 89 77 97 90 A
Sunny 79 85 28 93 82 73.4 C
Smith 85 72 49 75 63 68.8 D

Class Average: 71.18

——————————–
Process exited after 0.34 seconds with return value 0
Press any key to continue . . .

Still stressed from student homework?
Get quality assistance from academic writers!