Я хочу сравнить значение элемента в массиве с соседними элементами (3x3) и найти максимум (рисунок). Мой код ниже не работает. Какая часть пошла не так? Максимальный элемент в области
int data[10][10] = {};
int dataMax[10][10] = {};
int r_size = 3; // Size of region to compare
int h = floor(r_size/2);
for(int i = h; i < (10 - h ) ; i++){
for(int j = h; j < (10 - h); j++){
int max = 0;
for(int ii = i - h; ii < (i + h); ii++){
for(int jj = j - h; jj < (j + h ); jj++){
if(data[ii][jj] > max){
max = data[ii][jj];
}else{
dataMax[ii][jj] = 0;
}
}
}
dataMax[ii][jj] = data[ii][jj];
}
}
[Отредактировано на основе ответа]
int data[10][10] =
{{0,0,3,0,1,0,0,0,0,1},
{0,0,0,2,0,0,0,0,0,0},
{0,0,0,0,0,0,1,1,0,0},
{0,0,0,0,0,0,0,3,0,0},
{0,4,2,0,0,0,0,0,0,0},
{0,1,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,8,1,1,0,0},
{0,0,0,0,3,6,0,0,2,0},
{2,0,0,0,0,0,0,0,0,0}};
int dataMax[10][10] = {};
int r_size = 3; // Size of region to compare
int h = floor(r_size/2.0);
for(int i = h; i < (10 - h ) ; i++){ //**** correction ****
for(int j = h; j < (10 - h); j++){ //**** correction ****
int max = 0;
int max_x = 0; //**** correction ****
int max_y = 0;
for(int ii = i - h; ii <= (i + h); ii++){ //**** correction ****
for(int jj = j - h; jj <= (j + h ); jj++){ //**** correction ****
if(data[ii][jj] > max){
max = data[ii][jj];
max_x = ii; //**** correction ****
max_y = jj;
}else{
// dataMax[ii][jj] = 0;
}
}
}
dataMax[max_x][max_y] = max; //**** correction ****
}
}
я ожидаю получить следующее Datamax:
Найдено другую ошибку, отредактировал мой ответ (пометили его редактировать) – Till