Получить целочисленную квадратную матрицу порядка 7 с элементами 1, 2, ..., расположенными по спирали - C (СИ)
Формулировка задачи:
Получить целочисленную квадратную матрицу порядка 7, элементами которой являются числа 1, 2, ... 49 расположенные в ней по спилали. (Если не трудно, можно с пояснениями)
Решение задачи: «Получить целочисленную квадратную матрицу порядка 7 с элементами 1, 2, ..., расположенными по спирали»
textual
Листинг программы
#include <stdio.h> #include <stdlib.h> #define SIZE 7 void circle(int matrix[SIZE][SIZE]); int main(void) { int i, j; int matr[SIZE][SIZE]; circle(matr); for (i = 0; i < SIZE; ++i) { for (j = 0; j < SIZE; ++j) { printf("%4d", matr[i][j]); } printf("\n"); } return EXIT_SUCCESS; } void circle(int matrix[SIZE][SIZE]) { int i, j; static int m_max = SIZE, n_max = SIZE; static int m_min = 1, n_min = 0; static int i_save = 0, j_save = 0; static int value = 0; for (i = i_save, j = j_save; j < n_max; ++j) { matrix[i][j] = ++value; } j_save = --j; ++i_save; for (i = i_save, j = j_save; i < m_max; ++i) { matrix[i][j] = ++value; } i_save = --i; --j_save; for (i = i_save, j = j_save; j >= n_min; --j) { matrix[i][j] = ++value; } j_save = ++j; --i_save; for (i = i_save, j = j_save; i >= m_min; --i) { matrix[i][j] = ++value; } i_save = ++i; ++j_save; --m_max; --n_max; ++m_min; ++n_min; if (value < SIZE * SIZE) { circle(matrix); } }
Объяснение кода листинга программы
Вывод на экран и заполнение матрицы осуществляется по спирали, начиная с левого верхнего угла, с шагом 1, 8, 6, 5, 4, 3, 2, 1, а диагональные элементы (углы) матрицы пропущены. Для определения номера элемента используется формула: номер = (размер матрицы — 1) (размер матрицы — 2) / 2 + (размер матрицы — 1) — i — j (размер матрицы — 1) / 2, где i, j — координаты элемента.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д