我需要从测试成绩输入文件中找到最大测试成绩。测试分数以百分比列出,文本文件中每行一个。我只是不确定如何去做。现在,我的程序只读取数字并为其指定字母等级。
我想我可以将数字分配给数组,但是如果有一种方法可以不使用数组,那么我更愿意这样做。
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;
}
}
答案 0 :(得分:2)
由于要流式传输数据,因此可以使用“比较并替换”类型的算法来跟踪最大得分。
首先,您将变量初始化为低于所有可能的分数,
double max_score_so_far = 0.0;
然后,每当您查看新分数时,您都会问:“这比我迄今为止所见过的最大分数还要大吗?”如果是这样,则将当前的最大值替换为当前值。
if (g > max_score_so_far) { max_score_so_far = g; }
在文件末尾,max_score_so_far
的得分最高。
答案 1 :(得分:0)
尝试一下;
int main() {
ifstream inData;
try {
inData.open("Scores.txt");
}
catch (int e) {
return -1;
}
cout << "Percentage" << " " << "Grade" << endl;
cout << "-------------------" << endl;
double maxScore=-1;
double g;
while (inData >> g) {
maxScore=fmax(maxScore,g);
string p;
p = grade (g);
cout << " " << g << "%" << " -- " << p << endl;
}
cout <<"Maximum Score" is<<maxScore << endl;
}