For research purposes and to better help students, the admissions office of your
ID: 3627870 • Letter: F
Question
For research purposes and to better help students, the admissions office of your local university wants to know how well female and male students perform in certain courses. Due to confidentiality, the letter code f is used for female students and m for male students. Every file entry consists of a letter code followed by GPA. Each line has one entry. The number of entries in the file is unknown. Write a program that computes and outputs the average GPA for both female and male students. Format your results to two decimal places. Your program should use the following functions:a. openFiles
b. initialize
c. sumGrades
d. averageGrade
e. printResults
f. no global variables
Explanation / Answer
please rate - thanks
#include <iostream>
#include <fstream>
#include <iomanip>
using namespace std;
int openFiles(ifstream&,ofstream&);
void initialize(int&,int&,double&,double&,double&,double&);
void sumGrades(ifstream&, ofstream&,int&,int&,double&, double&);
void averageGrade(int,int,double,double,double&,double&);
void printResults(ofstream&,double,double);
int main()
{int females,males;
double gpaSumF,gpaSumM,gpaAvgF,gpaAvgM;
ifstream in;
ofstream out;
if(openFiles(in,out)==0)
{initialize(females,males,gpaSumF,gpaSumM,gpaAvgF,gpaAvgM);
sumGrades(in,out,females,males,gpaSumF,gpaSumM);
averageGrade(females,males,gpaSumF,gpaSumM,gpaAvgF,gpaAvgM);
printResults(out,gpaAvgF,gpaAvgM);
}
in.close();
out.close();
return 0;
}
int openFiles(ifstream& in,ofstream& out)
{char filename[30];
cout<<"what is the name of the input file you are using? ";
cin>>filename;
in.open(filename);
if(in.fail())
{ cout<<"input file did not open please check it ";
return 1;
}
cout<<"what is the name of the output file you are using? ";
cin>>filename;
out.open(filename);
return 0;
}
void initialize(int& females,int& males,double& SF,double& SM,double& avgFgpa,
double& avgMgpa)
{females=0;
males=0;
SF=0;
SM=0;
avgFgpa=-1;
avgMgpa=-1;
}
void sumGrades(ifstream& in,ofstream& out,int& females,
int& males,double& SF,double& SM)
{char gender;
double gpa;
in>>gender;
out<<"gender gpa ";
while(in)
{in>>gpa;
out<<gender<<" "<<setprecision(2)<<fixed<<gpa;
if(gender=='f')
{females++;
SF=SF+gpa;
}
else if(gender=='m')
{males++;
SM=SM+gpa;
}
else
out<<" "<<gender<<" unrecognized ";
out<<endl;
in>>gender;
}
}
void averageGrade(int females,int males,double SF,double SM,double& avgFgpa,double& avgMgpa)
{if(females>0)
avgFgpa=SF/females;
if(males>0)
avgMgpa=SM/males;
}
void printResults(ofstream& out,double avgFgpa, double avgMgpa)
{out<<"Average female gpa: "<<setprecision(2)<<fixed<<avgFgpa<<endl;
out<<"Average male gpa: "<<setprecision(2)<<fixed<<avgMgpa<<endl;
out<<"**NOTE** average of -1 means there was no data for that gender student ";
}
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.