Вывод квадрата чисел, повернутых по "спирали" - C#

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

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

Прошу помочь с решением такой-вот задачи. Вводится натуральное число N (2<N<100) в единственной строке ввода .

Вывод должен состоять из N строчек по N чисел (от 1 до N^2) , которые ,в свою очередь, разделяются пробелами.

Сама "спираль" вывода должна начинаться только в левом верхнем углу, закручиваться по часовой стрелке внутрь. Например,

Ввод: 4 Вывод: 1 2 3 4 12 13 14 5 11 16 15 6 10 9 8 7 Ввод: 3 Вывод: 1 2 3 8 9 4 7 6 5

Решение задачи: «Вывод квадрата чисел, повернутых по "спирали"»

textual
Листинг программы
            int n = int.Parse(Console.ReadLine());
            int[,] matrix = new int[n, n];
            int row = 0;
            int col = 0;
            int dx = 1;
            int dy = 0;
            int dirChanges = 0;
            int visits = n;
 
            for (int i = 0; i < matrix.Length; i++)
            {
                matrix[row, col] = i + 1;
                if (--visits == 0)
                {
                    visits = n * (dirChanges % 2) + n * ((dirChanges + 1) % 2) - (dirChanges / 2 - 1) - 2;
                    int temp = dx;
                    dx = -dy;
                    dy = temp;
                    dirChanges++;
                }
 
                col += dx;
                row += dy;
            }
            // вывод -?
            for (int i = 0; i < n; i++)
            {
                for (int j = 0; j < n; j++)
                {
                    Console.Write(matrix[i, j] + " ");
                }
                Console.WriteLine();
            }
            Console.ReadKey();

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


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

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

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