Получить целочисленную квадратную матрицу порядка 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 — координаты элемента.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 4.083 из 5
Похожие ответы