プログラムは、実際に出すべきではなく、「女性の平均GPAは-1です。#IND」を出力しています。
私は出力にそれらの値の平均GPAをそれをしたい2.4
メートル3.5
など
2.6 F、F、しかし、変数「avgfGPA」と「avgmGPAは」終わるされています。私の.datファイルを同じようにフォーマットされます"-1#のIND"テキストファイルを読み込んで無限の値を出力する奇妙な値を取得する
#include <iostream>
#include <iomanip>
#include <fstream>
using namespace std;
void openFiles(ifstream& inFile, ofstream& outFile)
{
inFile.open("finalin.dat");
outFile.open("finalout.dat");
outFile << fixed << showpoint << setprecision(2);
inFile >> fixed >> showpoint >> setprecision(2);
if (!inFile||!outFile)
{
cout << "Problem opening file.";
}
}
void initialize(int &countFemale,int &countMale,float &sumFemaleGPA,float &sumMaleGPA)
{
countFemale=0;
countMale=0;
sumFemaleGPA=0;
sumMaleGPA=0;
}
void sumGrades(ifstream& inFile, float &sumFemaleGPA, float &sumMaleGPA,int &m,int &f)
{
sumFemaleGPA=0;
sumMaleGPA=0;
if (!inFile)
{
inFile.open("finalin.dat");
}
char sex;
float grade;
while(!inFile.eof())
{
inFile >> sex >> grade;
switch (sex)
{
case 'f': sumFemaleGPA= (sumFemaleGPA + grade);
f++;
break;
case 'm': sumMaleGPA= (sumMaleGPA + grade);
m++;
break;
}
}
void averageGPA(float &avgfGPA, float &avgmGPA, int &m, int &f, float &sumFemaleGPA, float &sumMaleGPA)
{
avgmGPA=0;
avgfGPA=0;
avgfGPA=sumFemaleGPA/f;
avgmGPA=sumMaleGPA/m;
}
void printResults(float &avgfGPA, float &avgmGPA, ofstream& outFile)
{
cout <<"The average GPA of the female students is: "<< avgfGPA << endl;
cout <<"The average GPA of the male students is: "<< avgmGPA;
outFile << "The average GPA of the female students is: "<< avgfGPA << endl;
outFile <<"The average GPA of the male students is: "<< avgmGPA;
}
int main()
{
int countFemale;
int countMale;
float sumFemaleGPA;
float sumMaleGPA;
float avgfGPA;
float avgmGPA;
ifstream inFile;
ofstream outFile;
openFiles(inFile,outFile);
initialize(countFemale,countMale,sumFemaleGPA,sumMaleGPA);
sumGrades(inFile,sumFemaleGPA,sumMaleGPA,countMale,countFemale);
averageGPA(avgfGPA,avgmGPA,countMale,countFemale,sumFemaleGPA,sumMaleGPA);
printResults(avgfGPA,avgmGPA, outFile);
}
これまでの質問と同じ誤りがあります。あなたはおそらくそれらの修正を最初に適用するべきです。 – Mysticial
私はそれらの変数を変更しましたが、それでも私が望む解決策を私に与えていません。私はそれが.eofで何かか、ループ中にあるかもしれないと思う? –
while(!inFile.eof)ループを非常に慎重に調べてください。 – AndyG