【发布时间】:2015-06-06 07:18:50
【问题描述】:
我应该编写一个从文件中读取学生 ID 和成绩的程序,具有 3 个功能:
getResults:此函数从文件中读取并计算失败的人数(如果分数display:将所有内容都显示到屏幕上isF:检查分数是否小于55,如果是则返回true。 (换句话说,如果学生失败了,它将返回 true。)
我的程序运行良好,直到检查有多少失败。我几乎可以肯定这是一个逻辑错误,但我不知道在哪里。未正确计算失败学生的数量。根据示例文件,当它应该是 2 时,我一直得到 1。
#include <iostream>
#include <fstream>
using namespace std;
int getResults(ifstream &input, int &failed, double &average);
bool isF(int score);
void display(int num_students, double average, int num_failed);
int main() {
int numfailed, numOfStudents;
double avg;
ifstream in_stream("grades.txt");
numOfStudents = getResults(in_stream, numfailed, avg);
display(numOfStudents, avg, numfailed);
system("PAUSE");
return 0;
}
int getResults(ifstream &input, int &failed, double &average) {
int studentID, studentGrade, total = 0, numberOfStudents = 0;
while (input >> studentID >> studentGrade) {
total = total + studentGrade;
numberOfStudents = numberOfStudents + 1;
failed = isF(studentGrade);
}
average = total / numberOfStudents;
return numberOfStudents;
}
bool isF(int score) {
if (score < 55)
return true;
else
return false;
}
void display(int num_students, double average, int num_failed) {
cout << "Number of Students: " << num_students << endl;
cout << "Class Average: " << average << endl;
cout << "Number of students failed: " << num_failed << endl;
}
我的示例文件如下:
- 333 95
- 123 40
- 111 88
- 121 70
- 110 55
- 909 45
样本输出:
学生人数:6人
班级平均分:65
失败的学生人数:2
我得到的输出完全一样,除了我有 1 个学生失败。
【问题讨论】:
-
我的问题如下,我的程序运行良好,直到检查失败了多少。我几乎可以肯定这是一个逻辑错误,但我不知道在哪里。你的问题是什么?
-
你需要累积失败。
-
您可以将
if (score < 55) return true; else return false;替换为return (score < 55);。但你没有计算失败。
标签: c++