rendered paste body//###################################################
//Justin
//Grade Report Program
//COP 3014
//DUE:2/21/06
//###################################################
/* Function Headers */
#include <iostream>
#include <fstream>
#include <string>
#include <iomanip>
using namespace std;
void print_report(ofstream &fout,string L_Name,string F_Name,int grade_sum,float average,int lowest_grade,int next_lowest_grade);
float average, highest_ave=-999, lowest_ave=999;
int i, grade, grade_sum, num_of_grade, lowest_grade, next_lowest_grade;
string L_Name, F_Name, HighL_Name, HighF_Name, LowF_Name, LowL_Name;
int main()
{
ifstream fin; //Input file stream
ofstream fout; //Output file stream
fin.open("grades.txt"); //Open input file "grade_data.dat"
fout.open("report.txt"); //Open output file "grade_report.out"
float average, highest_ave=-999, lowest_ave=999;
int i, grade, grade_sum, num_of_grade, lowest_grade, next_lowest_grade;
string L_Name, F_name, HighL_Name, HighF_Name, LowF_Name, LowL_Name;
fout<<"\t\t\tGRADE REPORT"<<endl;
fout<<"\t\t\t************"<<endl<<endl;
fout<<setw(27)<<"Grade Sum"<<setw(13)<<"Average"<<setw(18)
<<"Lowest-Grade"<<setw(21)<<"Next Lowest Grade"<<endl;
while (fin>>F_Name>>L_Name>>num_of_grade>>grade)
{
grade_sum = grade;
lowest_grade= grade;
next_lowest_grade= grade;
for ( i=1; i < num_of_grade; i++)
{
fin>>grade;
if (grade <= lowest_grade)
lowest_grade=grade;
else
if (grade <= next_lowest_grade)
next_lowest_grade=grade;
grade_sum += grade;
}
grade_sum=grade_sum - lowest_grade - next_lowest_grade;
average=grade_sum/float(num_of_grade-2);
if (average < lowest_ave)
{
lowest_ave=average;
LowF_Name=F_Name;
LowL_Name=L_Name;
}
if (average > highest_ave)
{
highest_ave=average;
HighF_Name=F_Name;
HighL_Name=L_Name;
}
print_report(fout,L_Name,F_Name,grade_sum,average,lowest_grade,next_lowest_grade);
}
fout<<"Highest Average: "<<HighF_Name<<" "<<HighL_Name<<" ("<<highest_ave<<")"<<endl;
fout<<"Lowest Average: "<<LowF_Name<<" "<<LowL_Name<<" ("<<lowest_ave<<")"<<endl<<endl;
fout<<"\t\t*******END OF REPORT********"<<endl<<endl;
return 0;
}
void print_report(ofstream &fout,string L_Name,string F_Name,int grade_sum,float average,
int lowest_grade,int next_lowest_grade)
{
fout<<fixed(int)<<setprecision(0);
fout<<F_Name[0]<<". "<<left<<setw(15)<<L_Name<<right<<setw(6)<<grade_sum
<<setw(12)<<average<<setw(15)<<lowest_grade<<setw(18)<<next_lowest_grade<<endl<<endl;
}