如何解决for循环中的一对一问题

时间:2019-02-09 09:52:18

标签: c++ loops for-loop off-by-one

我给出了一些从文件中读取的变量值,并执行了总计计算。我的目标是找出我已完成的总计算量。我可以通过从计数器的末尾减去1来获得正确的数字,但是我不想不必通过更改条件使其更适合它来做到这一点。我意识到我没有在我的状态下使用计数器,这有问题吗?

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

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

//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 << "\t\t" << b << "\t\t" << t << "\t\t" << counter -1 << endl; //Output iteration results

//Reset total before next iteration
sum = 0;
}

1 个答案:

答案 0 :(得分:1)

类似这样的事情。它使用一个临时变量,它是sum的下一个值,如果该值太大,则中止循环。

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

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