整数阈值

时间:2014-03-07 12:37:28

标签: c++ algorithm comparison coordinates threshold

我需要在x,y坐标上设置阈值,以便我可以分析围绕这些坐标的数字。基本上我需要在x下方设置一个低阈值1,在y下面设置1,并设置一个高于x的高阈值1和高于y的高阈值。

我也有限制,因此如果x或y为0,则低阈值为0,如果x或y为9,则高阈值为9

我到目前为止的代码如下: - 对于y来说它是相同的所以我只发布了找到x的阈值...

bool CheckNextTo(int X, int Y){
        int LowThreshX,LowthreshY;
        int HighThreshX,HighThreshY;

        if (X == 0){
            LowThreshX =0;
            HighThreshX =X+1;
        }
        else if (X== 9){
            LowThreshX =X-1;
            HighThreshX=9;
        }
        else{
            LowThreshX=X-1;
            HighThreshX=X+1;
        }
}

这有效我只是在游荡,如果有一个更简单的方法来做到这一点,因为我将不得不再写这一切来计算Y阈值。我知道我可以编写返回阈值的函数但除此之外还有其他什么吗?

由于

4 个答案:

答案 0 :(得分:2)

您可以使用内置多种语言的三元if运算符(包括C和C ++)

  

(条件?然后:其他)

LowThresholdX= (X == 0 ? 0 : X-1);
HighThresholdX= (X == 9 ? 9 : X+1);
LowThresholdY= (Y == 0 ? 0 : Y-1);
HighThresholdY= (Y == 9 ? 9 : Y+1);

答案 1 :(得分:1)

我还没有真正明白你想要什么,但是不加重复地写东西可能会让事情变得更清楚。

您的代码变为:

bool CheckNextTo(int X, int Y){
        int LowThreshX = X-1;
        int HighThreshX = X+1;

        if (X == 0){
            LowThreshX = 0;
        }
        else if (X == 9){
            HighThreshX = 9;
        }
}

也可以写成:

bool CheckNextTo(int X, int Y){
        int LowThreshX = X-1;
        int HighThreshX = X+1;

        if (X == MIN){
            LowThreshX = X;
        }
        else if (X == MAX){
            HighThreshX = X;
        }
}

答案 2 :(得分:1)

MinMax函数派上用场:

LowThresholdX= Max(0, X-1);
HighThresholdX= Min(9, X+1);
LowThresholdY= Max(0, Y-1);
HighThresholdY= Min(9, Y+1);

答案 3 :(得分:0)

试试这个:

bool CheckNextTo(int X, int Y){
  int LowThreshX = MAX(0,X-1);
  int LowThreshY = MAX(0,Y-1);
  int HighThreshX = MIN(9,X+1);
  int HighThreshX = MIN(9,Y+1);
}

MAX,MIN是宏函数或std :: max / min。

你可以把它写成一个函数,但这取决于你的其他代码是如何工作的,而你没有向我们展示过。