如何在 for 循环中解决逐一关闭的问题

How to fix off-by-one issue in for-loop

本文关键字:问题 解决 for 循环      更新时间:2023-10-16

我得到了一些变量值,我从文件中读取了这些值,然后执行了运行的总计算。我的目标是找出我总共做了多少次计算。我可以通过最后从我的计数器中减去 1 来获得正确的数字,但我想不必通过改变我的条件来更好地适应它来做到这一点。我意识到我在我的条件下没有使用计数器,这是一个问题吗?

输入示例:a=10, b=5, t=70

任何帮助将不胜感激。尝试将条件更改为总和

//Reads and calculates a, b and t, and outputs number of dishes to output.txt
while (inFile >> a)
{       
inFile >> b >> t;
for (counter = 0; sum <= t ; counter++)
{
sum += a + (counter * b);
}
outFile << " " << a << "tt" << b << "tt" << t << "tt" << counter -1 << endl; //Output iteration results
//Reset total before next iteration
sum = 0;
}

像这样的东西。它使用一个 temp 变量,该变量是 sum 的下一个值,如果该值太大,则会中止循环。

for (counter = 0; ; ++counter)
{
    int temp = sum + a + (counter * b);
    if (temp > t)
        break; // too big quit the loop
    sum = temp;
}

现在,countersum在循环结束时应该具有正确的值。