Home > Enterprise >  How to make a loop to determine if 2 numbers belong in a given range
How to make a loop to determine if 2 numbers belong in a given range

Time:12-19

I am having problems making a loop which stops when both x and y are in the range/interval [0,1] in c .

double x;
double y;

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

}

This method with 2 loops works:

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

This doesn't work:

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

And this doesn't work either:

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

This makes an infinite loop (in my case):

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

Note: {do sth} changes x and y if needed so they will eventually go in that interval (same as in the first block of code).

Note 2: By doesn't work I mean it never goes in the loop when x is in the interval and y < 0 (and some other cases).

CodePudding user response:

while ( !( (x>=0 && x<=1) && (y>=0 && y<=1) ) ) should be the combined conditional check.

CodePudding user response:

I'd go for a dedicated function with a speaking name: so you can still understand your code in a couple of weeks :-), e.g.

  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
  }
  • Related