c++ - 不编译所有数据

标签 c++ loops while-loop

不确定我做错了什么,我只获得了第一个 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;
}

关于c++ - 不编译所有数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50225093/

相关文章:

javascript - 保持循环分配事件监听器的参数值

python - 如何遍历两个列表?

javascript - 每 5 个循环计数一次

c++ - 堆栈模板参数

c++ - 从多个来源编译一个库

python - 在 Tkinter 中循环遍历小部件

c++ - C++ While语句不适用于字符串和 “or”

Bash脚本,while循环中的多个条件

c++ - QT token 前缺少二元运算符 "("错误

C++ 模数需要两个 *un*signed 字节之间的减法运算才能工作,为什么?