如何进行循环以确定2个数字是否属于给定范围



我在生成一个循环时遇到问题,当x和y都在c++中的范围/区间[0,1]内时,该循环就会停止。

double x;
double y;
while(condition)
{
if(x < 0)
{
x = -x;
}
else
{
x = 2 - x;
}
if(y < 0)
{
y = -y;
}
else
{
y = 2 - y;
}
}

这种方法有两个循环:

while((x < 0) || (x > 1)) {do sth}
while((y < 0) || (y > 1)) {do sth}

这不起作用:

while(!((x >= 0) && (x <= 1)) && !((y >= 0) && (y <= 1))) {do sth}

这也不起作用:

while(((x < 0) || (x > 1)) && ((y < 0) || (y > 1))) {do sth}

这就形成了一个无限循环(在我的情况下(:

while(((x < 0) || (x > 1)) || ((y < 0) || (y > 1))) {do sth}

注意:如果需要,{dosth}会更改x和y,这样它们最终会在该间隔内进行(与第一块代码相同(。

注2:所谓不起作用,我的意思是当x在区间中并且y<0(以及其他一些情况(。

while(!((x>=0&&x<=1(&amp;(y>=0&&y<=1(((应该是组合条件检查。

我会选择一个有明确名称的专用函数:这样你仍然可以在几周内理解你的代码:-(,例如

auto check_outside_interval_0_1 = [] (double const a) {
return a < 0.0 or 1.0 < a;
};
while( check_outside_interval_0_1(x) or
check_outside_interval_0_1(y) ) {
// ... do your things here
}

最新更新