Заполнение матрицы по спирали - разобрать код - C (СИ)
Формулировка задачи:
Доброго времени суток. У меня есть рабочий код для этой задачи, но я не понимаю принцип его работы. Кто-то может подробно, пошагово объяснить работу кода. В каком порядке заполняются числа и т.д. Спасибо.
#include <stdio.h>
void main(){
const int M = 4;
int i, j, N, D = M;
int mas[M][M];
for (N = 0; N < M; N++, D--){
for (j = N, i = N; j < D; j++)
scanf_s("%d", &mas[i][j]);
for (i = i + 1; i < D; i++)
scanf_s("%d", &mas[i][j - 1]);
for (j = D - 2, i = D - 1; N <= j; j--)
scanf_s("%d", &mas[i][j]);
for (i = i - 1; N < i; i--)
scanf_s("%d", &mas[i][j + 1]);
}
for (i = 0; i < M; i++){
for (j = 0; j < M; j++)
printf("\t%d", mas[i][j]);
printf("\n");
}
}Решение задачи: «Заполнение матрицы по спирали - разобрать код»
textual
Листинг программы
//...
for (j = N, i = N; j < D; j++)
printf("1st %d %d\n", i, j);
//scanf_s("%d", &mas[i][j]);
for (i = i + 1; i < D; i++)
printf("2nd %d %d\n", i, j-1);
//scanf_s("%d", &mas[i][j - 1]);
for (j = D - 2, i = D - 1; N <= j; j--)
printf("3rd %d %d\n", i, j);
//scanf_s("%d", &mas[i][j]);
for (i = i - 1; N < i; i--)
printf("4th %d %d\n", i, j+1);
//scanf_s("%d", &mas[i][j + 1]);
//...