我需要从测试分数的输入文件中找到最大的测试分数。测试分数以百分比形式列出,文本文件中每行一个。我只是不知道如何去做。现在我的程序只是读取数字并为它们分配一个字母等级。
我想我可以将数字分配给一个数组,但如果有一种不使用数组的方法可以做到这一点,我更喜欢这样做。
string grade (double g) {
string p;
if (g >= 90) {
p = "A";
}
if (g >= 80 && g < 90) {
p = "B";
}
if (g >= 70 && g < 80) {
p = "C";
}
if (g >= 60 && g < 70) {
p = "D";
}
if (g < 60) {
p = "F";
}
return p;
}
int main() {
ifstream inData;
try {
inData.open("Scores.txt");
}
catch (int e) {
return -1;
}
cout << "Percentage" << " " << "Grade" << endl;
cout << "-------------------" << endl;
while (!inData.eof()) {
double g;
inData >> g;
string p;
p = grade (g);
cout << " " << g << "%" << " -- " << p << endl;
}
}
由于您正在流式传输数据,因此您可以使用“比较和替换”类型的算法来跟踪最大分数。
首先,您将初始化一个变量,使其低于所有可能的分数,
double max_score_so_far = 0.0;
然后每次你看到一个新的分数时,你都会问“这比我迄今为止见过的最大的还要大吗?” 如果是,那么你用当前值替换你的最大值。
if (g > max_score_so_far) { max_score_so_far = g; }
在您的文件末尾,max_score_so_far
应包含最高分。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句