累加器和while循环

时间:2015-11-17 19:36:33

标签: c++

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而不是数字的总和。我该如何解决这个问题?

1 个答案:

答案 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();
} 

免责声明:这不会修复代码中的其他逻辑错误。