0

这是我的 do-while 循环

do
{
    cout << "Enter the temperature tolerance for turning on the cooling" << endl
    << "1.50 <= ToleranceCoolOn <= 6.00 (degrees Celsius)" << endl
    << "and toleranceCoolOn > toleranceHeatOff" << endl;
    cin >> tempTolCoolOn;
} 
while ( !(tempTolCoolOn < tempTolerCoolOnMax && tempTolCoolOn > tempTolerCoolOnMin) && !(tempTolCoolOn > tempTolHeatOff));

这个想法是,当我输入一个大于 tempTolerCoolOnMax (6.0)、小于 tempTolerCoolOnMin (1.5) 和小于 tempTolHeatOff (2.0) 的数字时,它应该重复循环,直到我得到正确的答案。但是,在输入 (6.0001) 时,它会跳过循环并继续进行下一个循环。关于为什么会发生这种情况的任何想法?

4

3 回答 3

1

您在程序显示的提示中拥有您想要的规范 - 为什么不这样编码呢?

while (! (tempTolCoolOnMin <= tempTolCoolOn && tempTolCoolOn <= tempTolerCoolOnMax && tempTolCoolOn > tempTolHeatOff))

特别是,当您有一个逻辑/代数结构时,例如:

1.50 <= ToleranceCoolOn <= 6.00

我发现在 C++ 语法中尽可能类似地对表达式进行编码很有用:

1.50 <= ToleranceCoolOn && ToleranceCoolOn <= 6.00

顺便说一句 - 我不喜欢这些变量名;我发现它们很难相互区分。

于 2013-11-03T07:52:44.323 回答
0

我想你想要

!(tempTolCoolOn < tempTolerCoolOnMax && tempTolCoolOn > tempTolerCoolOnMin && tempTolCoolOn > tempTolHeatOff)

作为循环条件。

于 2013-11-03T06:12:10.437 回答
0

它应该是

while ( !(tempTolCoolOn < tempTolerCoolOnMax) && !(tempTolCoolOn > tempTolerCoolOnMin) && !(tempTolCoolOn > tempTolHeatOff));
于 2013-11-03T06:14:47.887 回答