while(true) {
infile >> studentCode >> test1 >> test2 >> lab >> finalExam;
finalG = finalGrade(test1, test2, lab, finalExam);
gradeSum = gradeSum + finalG;
letterG = letterGrade(finalG);
gradePrinter(); // Prints grades to outfile.
if (infile.eof())
break;
}
在我的while循环中,变量finalG不会在每个循环结束时添加到gradeSum。 (在while循环之前,gradeSum被初始化为0)。相反,gradeSum的值保持为零,只是添加函数finalGrade(test1,test2,lab,finalExam)输出的最后一个数字。例如,如果函数输出以下数字:
10
15
30
35
40
gradeSum将返回40 + 0,它只给我40而不是数字的总和。我该如何解决这个问题?
答案 0 :(得分:2)
<强>问题强>
您对while
循环的使用有误。您最终会再次处理成绩而不是有效。
我们假设您的文件中有两行:
101 18 20 15 48
102 19 20 14 50
阅读第二行后,infile.eof()
为false
。因此,你继续阅读。阅读不成功。然而你处理这些数字。您可能最终会两次处理最后一行。
解决方案
使用:
简化while
循环
while ( infile >> studentCode >> test1 >> test2 >> lab >> finalExam )
{
finalG = finalGrade(test1, test2, lab, finalExam);
gradeSum = gradeSum + finalG;
letterG = letterGrade(finalG);
gradePrinter();
}
免责声明:这不会修复代码中的其他逻辑错误。