如何进行循环以确定2个数字是否属于给定范围
How to make a loop to determine if 2 numbers belong in a given range
我在制作循环时遇到问题,当 x 和 y 都在 c++ 中的 range/interval [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;
}
}
这个有 2 个循环的方法有效:
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}
注意:如果需要,{do sth} 会更改 x 和 y,因此它们最终会进入该间隔(与第一段代码相同)。
注意 2:By 不起作用我的意思是当 x 在区间内且 y < 0(以及其他一些情况)时它永远不会进入循环。
while ( !( (x>=0 && x<=1) && (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
}
我在制作循环时遇到问题,当 x 和 y 都在 c++ 中的 range/interval [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;
}
}
这个有 2 个循环的方法有效:
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}
注意:如果需要,{do sth} 会更改 x 和 y,因此它们最终会进入该间隔(与第一段代码相同)。
注意 2:By 不起作用我的意思是当 x 在区间内且 y < 0(以及其他一些情况)时它永远不会进入循环。
while ( !( (x>=0 && x<=1) && (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
}