All pastes #42494 Raw Edit

grade_prog

public text v1 · immutable
#42494 ·published 2006-02-21 02:18 UTC
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;


}