【发布时间】:2010-12-19 03:21:51
【问题描述】:
我正在尝试编写一个从该文本文件中获取数据的程序:
然后,根据这些数据,程序应该计算每个性别(f=female,m=male)的平均gpa,并将结果输出到一个新文件中。
它还必须包含这五个函数:
openFiles:此函数打开输入和输出文件,并将浮点数的输出设置为固定十进制格式的两位小数,带小数点和尾随零。
initialize:该函数初始化变量。
sumGrades:该函数求男女学生GPA之和。
平均成绩:此函数计算男女学生的平均 GPA。
printResults:此函数输出相关结果。
我认为我已经对函数进行了很好的编码,但由于这是我第一个使用 fstream 的程序,我不确定我需要如何在我的主函数中实现它们。
这是我目前所拥有的:
标题:
#ifndef header_h
#define header_h
#include <iostream>
#include <iomanip>
#include <fstream>
#include <cstring>
#include <cstdlib>
using namespace std;
void extern initialize(int&, int&, float&, float&);
void extern openFiles(ifstream, ofstream);
void extern sumGrades(ifstream, ofstream, char, float, int&, int&, float&, float&);
void averageGrade (float&, float&, float, int, float, int);
void extern printResults (float, float, ofstream);
#endif
主要:
#include "header.h"
int main()
{
char gender;
float gpa, sumFemaleGPA, sumMaleGPA;
ifstream inData;
ofstream outData;
int countFemale, countMale;
inData.open("./Ch7_Ex4Data.txt");
outData.open("./Ch7_Ex4Dataout.txt");
do
inData >> gender >> gpa;
while(!inData.eof());
inData.close();
outData.close();
system("PAUSE");
return EXIT_SUCCESS;
}
打开文件:
#include "header.h"
void openFiles(ifstream inData, ofstream outData)
{
inData.open("./Ch7_Ex4Data.txt");
outData.open("./Ch7_Ex4Dataout.txt");
outData << fixed << showpoint << setprecision(2);
inData.close();
outData.close();
}
sumGrades:
#include "header.h"
void sumGrades(ifstream inData, ofstream outData, char gender, float gpa, int& countFemale, int& countMale, float& sumFemaleGPA,
float& sumMaleGPA)
{
char m, f;
do
{
inData >> gender >> gpa;
if(gender == m)
{
sumMaleGPA += gpa;
countMale++;
}
else if (gender == f)
{
sumFemaleGPA += gpa;
countFemale++;
}
}
while(!inData.eof());
}
平均成绩:
#include "header.h"
void averageGrade (float& maleGrade, float& femaleGrade, float sumMaleGPA, int countMale, float sumFemaleGPA, int countFemale)
{
maleGrade = sumMaleGPA / static_cast<float>(countMale);
femaleGrade = sumFemaleGPA / static_cast<float>(countFemale);
}
打印结果:
#include "header.h"
void
{
outData << "average male GPA: " << maleGrade << endl;
outData << "average female GPA: " << femaleGrade << endl;
}
【问题讨论】:
-
你有什么问题?您当前的代码在做什么?是否存在编译器错误,还是行为不端?这是作业吗?如果是这样,它应该被标记为这样。
-
averageGrade不需要 static_cast。
标签: c++