2014-03-07 76 views
1

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

我也有限制,这样,如果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阈值。我知道我可以编写返回阈值的函数,但除此之外还有其他的东西吗?

感谢

+1

谷歌夹紧,因为这是你正在寻找的概念 – Samuel

+0

我可能有一些示例代码?我查了一下,但有点困惑,它是如何分配1或1的。 – JabbaWook

回答

1

MinMax功能派上用场:

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

与* if then else if * solution相比,效率会有很小的损失,因为当'X <= 0'(或Y'= 0)'时,单个比较就足够了。在手边处理范围“[0..9]”中的所有'X'值需要'20'比较而不是''19'。 –

+0

Math :: Max不是C++函数。在算法库中使用max()宏或std :: max。看到我的(正确的)答案。 –

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

您可以使用三元如果运算符,这是内置在许多语言(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); 
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 ::最大值/最小值。

您可以将其作为函数编写,但这取决于您的其他代码的工作方式,并且您没有向我们展示过该代码。

+0

我相信已经接受的答案(由@Yves Daoust提供)和这个一样。 – JabbaWook

+0

我不这么认为。 Math :: Max/Min不是C++。但我同意它很接近 - 他写的回复没有提交。 –

+0

够公平的,仍然为我工作[+1] – JabbaWook