Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

Write a program that reads students’ names followed by their test scores. The pr

ID: 3721772 • Letter: W

Question

Write a program that reads students’ names followed by their test scores. The program should output each student’s name followed by the test scores and the relevant grade. It should also find and print the highest test score and the name of the students having the highest test score.

Student data should be stored in a struct variable of type studentType, which has four components: studentFName and studentLName of type string, testScore of type int (testScore is between 0 and 100), and grade of type char. Suppose that the class has 20 students. Use an array of 20 components of type studentType. Your program must contain at least the following functions:

A function to read the students’ data into the array.

A function to assign the relevant grade to each student.

A function to find the highest test score.

A function to print the names of the students having the highest test score.

Your program must output each student’s name in this form: last name followed by a comma, followed by a space, followed by the first name; the name must be left justified. Moreover, other than declaring the variables and opening the input and output files, the function main should only be a collection of function calls.

Your program should accept no input and save the output to Ch9_Ex2Out.txt.

I can't find where I went wrong please help.

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

struct studentType
{ string studentFName, studentLName;
    int testScore;
    char grade;

}
students[20];
int readStudentData(ifstream & inputFile, studentType students[]);
void assignGrade( studentType students[], int n);
void displayData(ofstream& inputFile, studentType students[], int n);
int highestScore(ofstream& outputFile, studentType students[], int n);
bool openInputFile(ifstream& inputFile, char filename[]);
void openOutputFile(ofstream& outputFile, char filename[]);

int main() {
    // Write your main here
    int n;
    ifstream inputFile;
    ofstream outputFile;
  
    inputFile.open("Ch9_Ex2Data.txt");
      
       n=readStudentData (inputFile, students);
        assignGrade(students, n);
        highestScore(outputFile, students, n);
        displayData(outputFile, students, n);
        highestScore(outputFile, students, n);
        openOutputFile(outputFile, students, n);
         out << "Highest test score: "<<students[max].testScore<<endl;
    out<<"Students with highest test score: "<<endl;
    int i;
    for (i=0; i<n;i++)
        if (students[i].testScore==students[max].testScore)
         out<<students[i].studentLName<<","<<students[i].studentFName<<endl;
          
        outputFile.close();
        inputFile.close();
  
      
    return 0;
}

bool openInputFile(ifstream & inputFile, char filename[])
{
    inputFile.open(filename);
    if(inputFile.fail())
    {
        cout<<"File was unable to open. Check the file and try again."<<endl;
        return false;
    }
    return true;
}

int readStudentData(ifstream & inputFile, studentType students[])
{
    int n=0;
    inputFile>>students[n].studentFName >>students[n].studentLName>>students[n].testScore;
    while(inputFile)
    {
        n++;
        inputFile>>students[n].studentFName>>students[n].studentLName>>students[n].testScore;
    }
return n;
}


void assignGrade ( studentType students[], int n)
{
    int i;
    for(i=0; i<n; i++)
       switch((int)(students[i].testScore/10))
        {
            case 10:
            case 9: students[i].grade='A';
          break;
            case 8: students[i].grade='B';
            break;
            case 7: students[i].grade='C';
            break;
            case 6: students[i].grade='D';
            break;
            default: students[i].grade='F';
            break;        
        }
}

void displayData(ofstream & out, studentType students[], int n)
        {
            out<<"Last_name, First_name, Score Grade ";
            out<<"---------- ";
            for(int i=0;i;)
            {
                out<<students[i].studentLName
                    << ", "
                    <<students[i].studentFName
                    <<", "
                    << students[i].testScore;
            }
        }
int highestScore( ofstream& out,studentType students[], int n)
        {
          int max=0, i;
          for(i=1; i<n;i++)
        
   if (students[i].testScore>students[max].testScore)
       max=i;
       return max;
}
void openOutputFile(ofstream & outputFile, char filename[], int n, studentType students[], int i)
        {
            outputFile.open(filename);
  
        }

Explanation / Answer

Hi,
the mistake is with this function,

int highestScore( studentType students[], int n) //firstly you dont need the opstream in this function
        {
          int max=students[0].testScore, i; //assuming 0 to be max first
          for(i=1; i<n;i++)
        
   if (students[i].testScore>max) //checking if some other course has more score than current max
       max=i;
       return max;
}
also change the declaration to
int highestScore( studentType students[], int n);

Thumbs up if this was helpful, otherwise let me know in comments

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote