So my project is to take create a program that takes an input that looks similar to this:
Boole, George 98 105 -1 -1 -1
Pascal, Blaise 63 48 92 92 92
Babbage, Charles 100 97 100 98 -1
Kepler, Johannes 75 102 100 -1 -1
Clown, Bozo 0 6 6 57 62
Fini, End -99 -99 -99 -99 -99
And output this:
Student Submission Grade
Boole, George 2 105
Pascal, Blaise 3 92
Babbage, Charles 1 100
Kepler, Johannes 2 102
Clown, Bozo 5 62
I'm having trouble because my current code can successfully compile it, but one of my other input files follows a different format. My current code:
int main()
{
ifstream infile;
ofstream outfile;
infile.open("./ProgGrades1.txt");
outfile.open("./GradeReporttest.txt");
string lastName, firstName;
int score1, score2, score3, score4, score5;
int max, location;
while(GetInput(infile, lastName, firstName, score1, score2, score3, score4,
score5))
{
if (score1 == -99)
break;
AnalyzeGrade(infile, lastName, firstName, score1, score2, score3,
score4, score5, max, location);
WriteOutput(infile, outfile, lastName, firstName, max, location);
cout << lastName << " " << firstName << " " << location << " " << max <<
endl;
}
infile.close();
outfile.close();
return 0;
}
int GetInput(ifstream& infile, string& lastName, string& firstName, int& score1,
int& score2, int& score3, int& score4, int& score5)
{
infile >> lastName >> firstName >> score1 >> score2 >> score3 >>
score4 >> score5;
return infile;
}
int AnalyzeGrade(ifstream& infile, string& lastName, string& firstName,
int& score1, int& score2, int& score3, int& score4, int& score5,
int& max, int& location)
{
int score[5];
max = 0;
score[0] = score1;
score[1] = score2;
score[2] = score3;
score[3] = score4;
score[4] = score5;
for (int i = 0; i < 5; i++)
{
if (score[i] > max)
{
max = score[i];
}
}
if (max == score[0])
{
location = 1;
}
else if (max == score[1])
{
location = 2;
}
else if (max == score[2])
{
location = 3;
}
else if (max == score[3])
{
location = 4;
}
else if (max == score[4])
{
location = 5;
}
else
{
}
fill_n(score, 6, 0);
return infile;
}
void WriteOutput(ifstream& infile, ofstream& outfile, string& lastName,
string& firstName, int& max, int& location)
{
string studentID = lastName + " " + firstName;
outfile << "\n" << setw(19) << studentID << setw(14) << location << " " <<
max;
}
My other input file looks like:
Stroustrup, Bjarne 8 8 -1 -1 -1
Lovelace, Ada 1 60 14 43 -1
von Neumann, Jon 77 48 65 -1 -1
Wirth, Niklaus 51 59 -1 -1 -1
Wozniak, Steve 81 -1 -1 -1 -1
Babbage, Charles 31 92 -1 -1 -1
Hopper, Grace 76 -1 -1 -1 -1
Bird, Tweety -99 -99 -99 -99 -99
Sylvester 77 39 -1 -1 -1
So the problem here is that my infile streams in two strings, but on line 3 there are two parts to the last name, and for the last line, there is one name. I need an alternate method to obtain the names.
Btw I'm currently in an intro to C++ course, so my knowledge is limited, but I have no qualms researching. As you can see, I'm using more entry level code. I tried to use arrays, but I concluded that I still don't understand how to pass them successfully.