首页 > 解决方案 > 我不知道如何摆脱最后不需要的输出

问题描述

这是我的代码:

#include <iostream>
#include <cstdlib>
#include <fstream>
#include <iomanip>
#include <string>
using namespace std;

void readStuData(ifstream& rss, int scores[],
                 int id[], int& count, bool& tooMany);

float mean(int scores[], int count);

void printTable(int score[], int ID[], int count);

void printGrade(int oneScore, float average);

int main() {
    const int MAX_SIZE = 10;
    ifstream rss;
    int numStuds = 0;
    int studScores[MAX_SIZE];
    int studIDs[MAX_SIZE];
    bool tooMany = false;
    int oneScore;
    float average;

    readStuData(rss, studScores, studIDs, numStuds, tooMany);

    printTable(studScores, studIDs, numStuds);

    for (int i = 0; i < MAX_SIZE; ++i) {
        oneScore = studScores[i];
    }
    average = mean(studScores, numStuds);
    printGrade(oneScore, average);

    return 0;
}

void readStuData(ifstream& rss, int scores[],
                 int id[], int& count, bool& tooMany) {
    int studScore;
    int studID;

    rss.open("StudentScores.txt");
    if (!rss.is_open()) {
        cout << "ERROR: Could not open file." << endl;
    }

    tooMany = false;
    count = 0;
    
    for (int i = 0; (i < 10) && (!tooMany) && (!rss.eof()); ++i) {
        rss >> studID;
        id[i] = studID;
        rss >> studScore;
        scores[i] = studScore;
        ++count;
    }

    if (count > 10) {
        tooMany = true;
    }

    if (tooMany) {
        cout << "ERROR: Too many inputs from file." << endl;
    }

    rss.close();
}

float mean(int scores[], int count) {
    float sum = 0.0;
    int i;

    for (i = 0; i < count; ++i) {
        sum += scores[i];
    }

    return sum / count;
}

void printGrade(int oneScore, float average) {
    if (oneScore > (average + 10)) {
        cout << setw(15) << left << "Outstanding" << endl;
    }
    else if ((oneScore > (average - 10)) && (oneScore < (average + 10))) {
        cout << setw(15) << left << "Satisfactory" << endl;
    }
    else if (oneScore < (average - 10)) {
        cout << setw(15) << left << "Unsatisfactory" << endl;
    }
}

void printTable(int score[], int ID[], int count) {
    cout << "Student ID" << '|';
    cout << setw(5) << "Score" << '|';
    cout << setw(10) << "Grade" << endl;
    cout << setfill('-') << setw(33) << "" << endl;
    cout << setfill(' ');

    for (int i = 0; i < count; ++i) {
        cout << setw(10) << left << ID[i] << '|';
        cout << setw(5) << left << score[i] << '|';
        printGrade(score[i], mean(score, count));
    }
}

这是我不断得到的输出:

输出

我如何摆脱最后的“杰出”?我不知道我做错了什么,但是当我摆脱 printTable() 函数中的 for 循环并在 printGrade() 函数中放入 8 for i 时,我仍然得到同样的结果。我知道有问题,但我无法弄清楚它是什么以及我必须做什么才能将其删除。有人可以帮我调试吗?

编辑:我需要指出需要填充数组。此外,最后不需要的输出是我唯一的问题。

标签: c++

解决方案


推荐阅读