Answer:
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
// Declare struct
struct studentType {
string studentFName;
string studentLName;
int testScore;
char grade;
};
// Function prototypes
void readData(studentType[], int);
void assignGrade(studentType[], int);
int highestScore(studentType[], int);
void printNames(studentType[], int, int);
int main() {
// Declare variables
const int NUM_STUDENTS = 20;
studentType student[NUM_STUDENTS];
// Open files
ifstream inFile;
ofstream outFile;
inFile.open("Ch9_Ex2In.txt");
outFile.open("Ch9_Ex2Out.txt");
// Read data
readData(student, NUM_STUDENTS);
// Assign grades
assignGrade(student, NUM_STUDENTS);
// Find and print highest score
int highest = highestScore(student, NUM_STUDENTS);
outFile << "The highest score is " << highest << endl;
outFile << "The students with the highest score are: " << endl;
printNames(student, NUM_STUDENTS, highest);
// Close files
inFile.close();
outFile.close();
return 0;
}
// Function definitions
void readData(studentType student[], int numStudents) {
for (int i = 0; i < numStudents; i++) {
inFile >> student[i].studentLName >> student[i].studentFName >> student[i].testScore;
}
}
void assignGrade(studentType student[], int numStudents) {
for (int i = 0; i < numStudents; i++) {
if (student[i].testScore >= 90)
student[i].grade = 'A';
else if (student[i].testScore >= 80)
student[i].grade = 'B';
else if (student[i].testScore >= 70)
student[i].grade = 'C';
else if (student[i].testScore >= 60)
student[i].grade = 'D';
else
student[i].grade = 'F';
}
}
int highestScore(studentType student[], int numStudents) {
int highest = 0;
for (int i = 0; i < numStudents; i++) {
if (student[i].testScore > highest)
highest = student[i].testScore;
}
return highest;
}
void printNames(studentType student[], int numStudents, int highest) {
for (int i = 0; i < numStudents; i++) {
if (student[i].testScore == highest)
outFile << left << student[i].studentLName << ", " << student[i].studentFName << endl;
}
}
Step-by-step explanation: