Пороги по целым числам

Мне нужно установить пороговые значения для координат x, y, чтобы я мог анализировать числа, окружающие эти координаты. в основном мне нужно установить низкий порог 1 ниже x и 1 ниже y и установить высокий порог 1 выше x и 1 выше y.

У меня также есть ограничения, так что если x или y равен 0, нижний порог равен 0, а если x или y равен 9, верхний порог равен 9

Код, который у меня есть, выглядит следующим образом: — это то же самое для вас, поэтому я только опубликовал поиск порогов для х …

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

Решение

Min а также Max Функции пригодятся:

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

Другие решения

Вы можете использовать троичный оператор 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);
2

Я не совсем понял, что вы хотите, но написание вещей без повторений может сделать вас более понятным.

Ваш код становится:

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;
}
}
1

Попробуй это:

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.

Вы можете написать это как функцию, но это будет зависеть от того, как работает ваш другой код, и вы нам этого не показали.

0
По вопросам рекламы [email protected]