我有一个代码,该代码应该在循环中每次迭代将变量减一。问题是它没有,它保持不变。这是我的代码:
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循环吗?任何帮助将非常欢迎!
答案 0 :(得分:1)
为了在其中输入任何代码
if (IsRed(maxSpeed, distance, time) == true)
{
//stuff
}
要执行,您的函数IsRed(...)需要返回true,而您提供的输入则不需要。
您也不需要在if语句中指定== true
,只需编写以下内容即可:
if (IsRed(maxSpeed, distance, time))
{
//stuff
}
由于函数IsRed的返回类型。