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

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

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

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

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

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

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

В данном коде выполняется проверка, является ли элемент массива 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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы