变量未按预期循环更改

时间:2019-05-05 15:14:37

标签: c++

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

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循环吗?任何帮助将非常欢迎!

1 个答案:

答案 0 :(得分:1)

为了在其中输入任何代码

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

}

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

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

由于函数IsRed的返回类型。