我有一个代码,该代码应该在循环中每次迭代将变量减一。问题是它没有,它保持不变。这是我的代码:

bool IsRed(int speed, int distance, int time)
{
    if ((18 * distance) % (10 * speed * time) >= (5 * distance * time))  {return true;}

    return false;
}

std::vector<std::pair<int, int> > DistanceTime = {{ 300,10 }, { 1500,10 }, { 3000,10 }};
int maxSpeed = 90 * 0.277778;
int traficLights = 3;

for (int i = 0; i < traficLights; i++)
{
    for (auto j = DistanceTime.begin(); j != DistanceTime.end(); ++j)
    {
        int distance = j->first;
        int time = j->second;
        if (IsRed(maxSpeed, distance, time) == true)
        {
            maxSpeed--; //should get reduced
            i = 0;
            j = DistanceTime.begin();

        }
        //debug line
        std::cout << maxSpeed * 3.6 << std::endl; //didn't change
    }


}


每次IsRed()函数返回“ true”时,变量maxSpeed应该减小。然后,第一个和第二个for循环应重新初始化并再次测试新降低的速度。最后,应打印IsRed()函数中所有向量对的返回“ false”的maxSpeed(在上面的代码中未执行此操作)。

我搞砸了for循环吗?任何帮助将非常欢迎!

最佳答案

为了在其中包含任何代码:

if (IsRed(maxSpeed, distance, time) == true)
{
   //stuff

}


要执行,您的函数IsRed(...)需要返回true,而您提供的输入则不需要。
您也不需要在if语句中指定== true,您只需编写以下内容:

if (IsRed(maxSpeed, distance, time))
{
   //stuff
}


由于函数IsRed的返回类型。

09-07 23:46