Write a program to generate a report based on input received from a text file. S
ID: 3908095 • Letter: W
Question
Write a program to generate a report based on input received from a text file. Suppose the input text file student_grades.txt contains the student’s Last name , First name, SSN, Test1, Test2, Test3 and Test4. i.e. Alfalfa Aloysius 123-45-6789 40.0 90.0 100.0 83.0 49.0 Generate the output Report File student_final.txt in the following format : LastName FirstName SSN Test1 Test2 Test3 Test4 FinalGrade i.e. Alfalfa Aloysius 123-45-6789 40.0 90.0 100.0 83.0 49.0 D- Last name First name SSN Test1 Test2 Test3 Test4 Final Grade The program must be written to use the enum letter_grade : enum letter_grade {A, A_PLUS, A_MINUS, B,B_PLUS, B_MINUS, C, C_PLUS, C_MINUS,D,D_PLUS,D_MINUS,F } ; Use the following function prototype for deriving letter grade : letter_grade deriveGrade(double average) ; The average is calculated as follows : (test1 + test2 + test3 + test4)/4.0 The function deriveGrade should derive the letter_grade of the student based on the following grading scale.
Letter Grade
Percentage
GPA
A+
97%+
4.33/4.00 or 4.00/4.00
A
93%-96%
4.00/4.00
A-
90%-92%
3.67/4.00
B+
87%-89%
3.33/4.00
B
83%-86%
3.00/4.00
B-
80%-82%
2.67/4.00
C+
77%-79%
2.33/4.00
C
73%-76%
2.00/4.00
C-
70%-72%
1.67/4.00
D+
67%-69%
1.33/4.00
D
63%-66%
1.00/4.00
D-
60%-62%
0.67/4.00
F
0%-59%
0.00/4.00
Also provide the following function : string convertToText(letter_grade grade) ; //This function converts a letter_grade type to a string type.
NOTES : • Place the namespace in a header file (i.e. grade.h) • and place both the enum type and letter_grade function in the namespace ‘stdGrade’ • Code is C++
Letter Grade
Percentage
GPA
A+
97%+
4.33/4.00 or 4.00/4.00
A
93%-96%
4.00/4.00
A-
90%-92%
3.67/4.00
B+
87%-89%
3.33/4.00
B
83%-86%
3.00/4.00
B-
80%-82%
2.67/4.00
C+
77%-79%
2.33/4.00
C
73%-76%
2.00/4.00
C-
70%-72%
1.67/4.00
D+
67%-69%
1.33/4.00
D
63%-66%
1.00/4.00
D-
60%-62%
0.67/4.00
F
0%-59%
0.00/4.00
Explanation / Answer
/******************************************************************************
Online C++ Compiler.
Code, Compile, Run and Debug C++ program online.
Write your code in this editor and press "Run" button to compile and execute it.
*******************************************************************************/
#include <iostream>
#include <fstream>
#include <string>
#include <sstream>
using namespace std;
enum letter_grade {A, A_PLUS, A_MINUS, B,B_PLUS, B_MINUS, C, C_PLUS, C_MINUS,D,D_PLUS,D_MINUS,F } ;
letter_grade deriveGrade(double average) ;
string convertToText(letter_grade grade) ;
int main()
{
string line;
ifstream studentfile ("student_grades.txt");
if (studentfile.is_open())
{
while ( getline (studentfile,line) )
{
string arr[7];
int i = 0;
stringstream ssin(line);
while (ssin.good()&& i < 7){
ssin >> arr[i];
++i;
}
int sum=arr[3]+arr[4]+arr[5]+arr[6];
double avg=sum/4;
letter_grade finalEnum=deriveGrade(avg);
string grade=convertToText(letter_grade);
string data=arr[0]+" "+arr[1]+" "+arr[2]+" "+arr[3]+" "+arr[4]+" "+arr[5]+" "+arr[6]+" "+grade;
std::ofstream outfile ("tudent_final.txt");
outfile << data<< std::endl;
outfile.close();
}
studentfile.close();
}
return 0;
}
letter_grade deriveGrade(double average){
if(average==4.33||average==4.00)
return A_PLUS;
else if(average==4.00)
return A;
else if(average==3.67)
return A_MINUS;
else if(average==3.33)
return B_PLUS;
else if(average==3.00)
return B;
else if(average==2.67)
return B_MINUS;
else if(average==2.33)
return C_PLUS;
else if(average==2.00)
return C;
else if(average==1.67)
return C_MINUS;
else if(average==1.33)
return D_PLUS;
else if(average==1.00)
return D;
else if(average==0.67)
return D_MINUS;
else if(average==0.00)
return F;
}
string convertToText(letter_grade grade) {
if(grade==A_PLUS)
return "A+";
else if(grade==A)
return "A";
else if(grade==A_MINUS)
return "A-";
else if(grade==B_PLUS)
return "B+";
else if(grade==B)
return "B";
else if(grade==B_MINUS)
return "B";
else if(grade==C_PLUS)
return "C+";
else if(grade==C)
return "C";
else if(grade==C_MINUS)
return "C-";
else if(grade==D_PLUS)
return "D+";
else if(grade==D)
return "D";
else if(grade==D_MINUS)
return "D-";
else if(grade==F)
return "F";
}
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.