c++ - 我不知道如何摆脱最后不需要的输出
问题描述
这是我的代码:
#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 - 将目录中的文件列表读入char数组
- webpack - 从 Tailwind Config 或 PostCSS 加载器中排除文件路径
- fortran - 减少 OpenMP fortran 会导致奇怪的结果
- .htaccess - htaccess 使用另一个环境变量设置环境变量
- javascript - 使用扩展运算符或 Object.assign 将子节点的所有节点复制到父节点,避免覆盖相同的属性
- java - 矩阵相乘时接收错误
- java - Thymeleaf - 如何创建进度条?
- sql - Delta Lake MERGE / UPDATE rewriting data even when condition is not met
- python - Why the loss still repeat?
- sql - Oracle 返回计数的最高值