c++ - 未编译所有数据
问题描述
不确定我做错了什么,我只得到了第一个 while 语句的值。
该值计算正确,所以我不知道我做错了什么。
也许有人能看到我看不到的东西。我知道你没有它正在读取的文件,但应该不需要这个。
任何帮助表示赞赏。我似乎总是对 while 循环有疑问。
#include <iostream>
#include <fstream>
#include <string>
#include <iomanip>
using namespace std;
int main()
{
string inputFileName;
string name, gender, college;
double score = 0, totalCC = 0, totalUN = 0, totalFemalesScore = 0, totalMalesScore = 0;
int ccCount = 0, unCount = 0, fCount = 0, mCount = 0;
ifstream inputFile;
cout << "Input file name: ";
getline(cin, inputFileName);
inputFile.open(inputFileName);
if (!inputFile.is_open())
{
cout << "Unable to open input file." << endl;
exit(1);
}
while (inputFile.peek() != EOF)
{
inputFile >> name >> gender >> college >> score;
cout << left << setw(17) << name << setw(4) << gender << setw(4) << college << setw(4) << score << endl;
}
cout << "\nEnd of file reached\n" << endl;
inputFile.clear();
inputFile.seekg(0);
while (inputFile >> name)
{
inputFile >> gender >> college >> score;
if (gender == "F")
{
totalFemalesScore += score;
fCount++;
}
}
while (inputFile >> name)
{
inputFile >> gender >> college >> score;
if (gender == "M")
{
totalMalesScore += score;
mCount++;
}
}
while (inputFile >> name)
{
inputFile >> gender >> college >> score;
if (college == "CC")
{
totalCC += score;
ccCount++;
}
}
while (inputFile >> name)
{
inputFile >> gender >> college >> score;
if (college == "UN")
{
totalUN += score;
unCount++;
}
}
cout << "\nEnd of file reached\n" << endl;
cout << fixed << showpoint << setprecision(2);
cout << "Average for females = " << totalFemalesScore / fCount << endl;
cout << "Average for males = " << totalMalesScore / mCount << endl;
cout << "Average of CC students = " << totalCC / ccCount << endl;
cout << "Average of UN students = " << totalUN / unCount << endl;
inputFile.close();
system("pause");
return 0;
}
解决方案
由于您正在访问这些代码行中的值:
while (inputFile.peek() != EOF)
{
inputFile >> name >> gender >> college >> score;
cout << left << setw(17) << name << setw(4) << gender << setw(4) << college << setw(4) << score << endl;
}
为什么不在该循环内进行计算:
while (inputFile.peek() != EOF)
{
inputFile >> name >> gender >> college >> score;
if (gender == "F")
{
totalFemalesScore += score;
fCount++;
} else {
totalMalesScore += score;
mCount++;
}
if (college == "CC")
{
totalCC += score;
ccCount++;
} else if (college == "UN") {
totalUN += score;
unCount++;
}
cout << left << setw(17) << name << setw(4) << gender << setw(4) << college << setw(4) << score << endl;
}
推荐阅读
- docker - 在 debian buster 的 docker 中缺少带有 wkhtmltopdf 的 Qt 库
- typescript - 动态创建多种类型
- objective-c - NSArray 的 mutableCopy - 性能问题
- javascript - google.maps.Map() 已使用但未加载数据,这会产生费用吗?
- r - 使用 ggplot2 中列中的颜色
- python - 将 .edf 转换为 .npy
- spring-boot - spring boot 从请求中获取承载令牌并调用另一个微服务
- php - 如何在复选框上添加 PHP Cookies 或 Sessions
- javascript - 如何选择具有特定类的元素?
- c# - 连接到远程服务器 ps.outlook.com 失败并显示以下错误消息:访问被拒绝