Вывод квадрата чисел, повернутых по "спирали" - 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();
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д