Получить целочисленную квадратную матрицу порядка 7 с элементами 1, 2, ..., расположенными по спирали - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Получить целочисленную квадратную матрицу порядка 7, элементами которой являются числа 1, 2, ... 49 расположенные в ней по спилали. (Если не трудно, можно с пояснениями)

Решение задачи: «Получить целочисленную квадратную матрицу порядка 7 с элементами 1, 2, ..., расположенными по спирали»

textual
Листинг программы
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. #define SIZE 7
  5.  
  6. void circle(int matrix[SIZE][SIZE]);
  7.  
  8. int main(void) {
  9.  
  10.     int i, j;
  11.     int matr[SIZE][SIZE];
  12.  
  13.     circle(matr);
  14.  
  15.     for (i = 0; i < SIZE; ++i) {
  16.         for (j = 0; j < SIZE; ++j) {
  17.             printf("%4d", matr[i][j]);
  18.         }
  19.         printf("\n");
  20.     }
  21.  
  22.     return EXIT_SUCCESS;
  23. }
  24.  
  25. void circle(int matrix[SIZE][SIZE]) {
  26.  
  27.     int i, j;
  28.     static int m_max = SIZE, n_max = SIZE;
  29.     static int m_min = 1, n_min = 0;
  30.     static int i_save = 0, j_save = 0;
  31.     static int value = 0;
  32.  
  33.     for (i = i_save, j = j_save; j < n_max; ++j) {
  34.         matrix[i][j] = ++value;
  35.     }
  36.     j_save = --j;
  37.     ++i_save;
  38.     for (i = i_save, j = j_save; i < m_max; ++i) {
  39.         matrix[i][j] = ++value;
  40.     }
  41.     i_save = --i;
  42.     --j_save;
  43.     for (i = i_save, j = j_save; j >= n_min; --j) {
  44.         matrix[i][j] = ++value;
  45.     }
  46.     j_save = ++j;
  47.     --i_save;
  48.     for (i = i_save, j = j_save; i >= m_min; --i) {
  49.         matrix[i][j] = ++value;
  50.     }
  51.     i_save = ++i;
  52.     ++j_save;
  53.  
  54.     --m_max;
  55.     --n_max;
  56.     ++m_min;
  57.     ++n_min;
  58.  
  59.     if (value < SIZE * SIZE) {
  60.         circle(matrix);
  61.     }
  62.  
  63. }

Объяснение кода листинга программы

Вывод на экран и заполнение матрицы осуществляется по спирали, начиная с левого верхнего угла, с шагом 1, 8, 6, 5, 4, 3, 2, 1, а диагональные элементы (углы) матрицы пропущены. Для определения номера элемента используется формула: номер = (размер матрицы — 1) (размер матрицы — 2) / 2 + (размер матрицы — 1) — i — j (размер матрицы — 1) / 2, где i, j — координаты элемента.

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


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

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

12   голосов , оценка 4.083 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы