Перемещаясь против часовой стрелки, вывести все элементы матрицы по спирали - C (СИ)

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

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

Matrix16. Дана квадратная матрица A порядка M (M — нечетное число). Начиная с элемента A1,1 и перемещаясь против часовой стрелки, вывести все ее элементы по спирали: первый столбец, последняя строка, последний столбец в обратном порядке, первая строка в обратном порядке, оставшиеся элементы второго столбца и т. д.; последним выводится центральный элемент матрицы.

Решение задачи: «Перемещаясь против часовой стрелки, вывести все элементы матрицы по спирали»

textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define A 11
 
int main()
{
    srand(time(NULL));
    int arr[A][A], fl = 0, x = 0, z = 0, l = A - 1, n;
    for (int a = 0; a < A; ++a) {
        printf("\n");
        for (int b = 0; b < A; ++b)
            printf("[%2d]", arr[a][b] = rand() % 100);
    }
    printf("\n");
    for (;; fl = ~fl, n = x, x = l, fl ? z -= 1 : z += 1, fl ? l = n - 1 : l = n) {
        printf("\n");
        for (int i = z, j = x; fl ? i >= l : i <= l; fl ? --i : ++i)
            printf("[%2d]", arr[i][j]);
        if (x == A / 2) break;
        z = l;
        fl ? x -= 1 : x += 1;
        if (fl) l += 1;     
        printf("\n");
        for (int i = z, j = x; fl ? j >= l : j <= l; fl ? --j : ++j)
            printf("[%2d]", arr[i][j]);         
    }
    printf("\n");
    return 0;
}

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

Вывод элементов матрицы по спирали:

  1. Инициализация матрицы случайными числами от 0 до 99.
  2. Цикл, который продолжается до тех пор, пока не будет выполнено одно из условий выхода.
  3. Условие fl = ~fl меняет значение fl на противоположное.
  4. Значение n не определено, но используется в качестве счетчика для циклов.
  5. Значение x и z используется для определения начальной позиции в матрице.
  6. Внутренний цикл перемещается по матрице от начальной позиции по спирали.
  7. Переменная fl контролирует направление движения.
  8. Внешний цикл изменяет направление движения.
  9. Цикл продолжается до тех пор, пока не будет выполнено одно из условий выхода.
  10. Выводится элемент матрицы, находящийся в текущей позиции.
  11. Если x равно половине размера матрицы, цикл завершается.
  12. Значение z устанавливается равным последнему значению l.
  13. Если fl равно 0, то x уменьшается на единицу, иначе l увеличивается на единицу.
  14. Выводится элемент матрицы, находящийся в текущей позиции.
  15. По окончании циклов выводится элемент матрицы, находящийся в позиции (A-1), (A-2), ..., (A-(A/2-1)).
  16. Возвращается 0, что означает успешное завершение программы.

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


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

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

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