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。 (gradeSum 在 while 循环之前被初始化为 0)。相反,gradeSum 的值保持为零,并且只添加函数 finalGrade(test1, test2, lab, finalExam) 输出的最后一个数字。例如,如果函数输出以下数字:
10
15
30
35
40
gradeSum 将返回 40 + 0,这只会给我 40 而不是数字的总和。我该如何解决这个问题?
最佳答案
问题
您对 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();
}
免责声明:这不会修复代码中的其他逻辑错误。
关于c++ - 累加器和 while 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33765542/