c++ - 累加器和 while 循环

标签 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。 (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/

相关文章:

c++ - 如何在 NIST PIV 卡上执行 VERIFY 命令?

c++ - 如何使用 decltype 获取引用的类型?

c++ - 如何检测给定的 PIDL 是否实际上是 .zip 文件或类似文件?

c++ - 如何查明文件是否被修改?

c++ - cmake 如何在项目的 vcxproj PropertyGroup 中添加自定义条目?

c++ - CGAL 如何判断三角形是否在边界上

C++(嵌套)函数调用指令——寄存器

c++ wait_until奇怪的超时行为

c++ - 创建一批随机矩阵

c++ - 用渐变颜色动态填充数组c++