Некорректное заполнение массива - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Околосапёр. Не могу понять, почему не работает. Девятка - бомба. Почему-то не хочет окружать её единичками, пропускает предыдущую строку, ПРЕДЫДУЩЕГО столбца и прибавляет лишнюю единицу к предыдущей строке СЛЕДУЮЩЕГО столбца.
void DoSmth (int A[100][100], int m, int n)
{
    for (int i=0;i<m;i++)
        for (int j=0;j<n;j++)
            if(A[i][j]==9)
            {
                if (A[i-1][j-1]<9) A[i-1][j-1]++;           //предыдущая строка, предыдущий столбец
                if (A[i+1][j]<9)   A[i+1][j]++;         //следующая строка, текущий столбец
                if (A[i-1][j]<9)   A[i-1][j]++;         //предыдущая строка, текущий столбец
                if (A[i+1][j+1]<9) A[i+1][j+1]++;           //следующая строка, следующий столбец
                if (A[i-1][j+1]<9) A[i-1][j+1]++;           //предыдущая строка, следующий столбец
                if (A[i+1][j-1]<9) A[i+1][j-1]++;           //следующая строка, предыдущий столбец
                //if (A[i-1][j-1]<9) A[i-1][j-1]++;         //предыдущая строка, предыдущий столбец
                if (A[i][j+1]<9)   A[i][j+1]++;         //текущая строка, следующий столбец
                if (A[i][j-1]<9)   A[i][j-1]++;         //текущая строка, предыдущий столбец
            }
}

Решение задачи: «Некорректное заполнение массива»

textual
Листинг программы
if(A[i][j]==9)
{
    int di[]={-1,-1,-1,0,1,1, 1, 0};
    int dj[]={-1, 0, 1,1,1,0,-1,-1};
    for(int k=0; k<8; k++)
    {
        int ni=i+di[k];
        int nj=j+dj[k];
        if(ni>=0 && nj>=0 && ni<m && nj<n && A[ni][nj]<9) A[ni][nj]++;
    }
}

Объяснение кода листинга программы

В данном коде выполняется проверка, является ли элемент массива A[i][j] равным 9. Если это так, то создается новый массив di и dj, который содержит значения для смещения элемента. Затем происходит цикл по элементам массива di и dj, в котором создаются новые значения i и j, которые используются для проверки диагоналей. Если элементы находятся в пределах допустимых значений (ni>=0 && nj>=0 && ni<m && nj<n), то значение элемента A[ni][nj] увеличивается на единицу.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 3.333 из 5
Похожие ответы