Закономерность построения матрицы - C (СИ)
Формулировка задачи:
Доброго времени суток. Есть такое задание: "Матрицу А(m,n) заполнить следующим образом. Для заданных k и l элементу akl присвоить значение 1; элементам, окаймляющим его (соседним с ним по вертикали, горизонтали и диагонали), - значение 2; элементам следующего окаймления – значение 3 и так далее до заполнения всей матрицы."
Понятно как сделать по вертикали и горизонтали, но вот как дальше делать не могу понять. До меня не доходит закономерность заполнения.Представляю я себе примерно так один из вариантов:
Решение задачи: «Закономерность построения матрицы»
textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#define N 5
int max(int a, int b) {
return a > b ? a : b;
}
int main(void) {
int k = 0, l = 1;
int i, j;
int a[N][N];
for (i = 0; i < N; ++i) {
for (j = 0; j < N; ++j) {
a[i][j] = 1 + max(abs(i-k), abs(j-l));
printf("%3d", a[i][j]);
}
printf("\n");
}
return 0;
}
Объяснение кода листинга программы
В этом коде используется язык программирования C. Он создает матрицу размером 5x5 и заполняет ее значениями, используя функцию max для поиска максимального значения между абсолютными значениями разности между индексами строки и столбца матрицы и двумя переменными k и l. Значения матрицы выводятся на экран через функцию printf.