Получить целочисленную квадратную матрицу порядка 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 — координаты элемента.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д