Мне нужно установить пороговые значения для координат 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. Я знаю, что мог бы написать функцию, которая также возвращает пороги, но кроме этого есть что-нибудь еще?
Спасибо
Min
а также Max
Функции пригодятся:
LowThresholdX= Max(0, X-1);
HighThresholdX= Min(9, X+1);
LowThresholdY= Max(0, Y-1);
HighThresholdY= Min(9, Y+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);
Я не совсем понял, что вы хотите, но написание вещей без повторений может сделать вас более понятным.
Ваш код становится:
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;
}
}
Попробуй это:
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.
Вы можете написать это как функцию, но это будет зависеть от того, как работает ваш другой код, и вы нам этого не показали.