Вывести элементы матрицы на экран в следующем порядке - C#

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

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

Помогите пожалуйста, не могу понять как вывести элементы матрицы на экран в следующем порядке:

Решение задачи: «Вывести элементы матрицы на экран в следующем порядке»

textual
Листинг программы
  1. using System;
  2.  
  3. namespace CleanConsole
  4. {
  5.     class Program
  6.     {
  7.         static void Main(string[] args)
  8.         {
  9.             var matrix = CreateRandomMatrix(4, 4);
  10.             PrintMatrix(matrix);
  11.             Console.WriteLine();
  12.             PrintZigZag(matrix);
  13.         }
  14.  
  15.         static int[,] CreateRandomMatrix(int rows, int columns)
  16.         {
  17.             var rand = new Random();
  18.             var matrix = new int[rows, columns];
  19.             for (int y = 0; y < rows; ++y)
  20.                 for (int x = 0; x < columns; ++x)
  21.                     matrix[y, x] = rand.Next(10);
  22.             return matrix;
  23.         }
  24.  
  25.         static void PrintMatrix(int[,] matrix)
  26.         {
  27.             for (int y = 0; y < matrix.GetLength(0); ++y)
  28.             {
  29.                 for (int x = 0; x < matrix.GetLength(1); x++)
  30.                 {
  31.                     Console.Write($"{matrix[y, x],2}");
  32.                 }
  33.                 Console.WriteLine();
  34.             }
  35.         }
  36.  
  37.         static void PrintZigZag(int[,] matrix)
  38.         {
  39.             int rows = matrix.GetLength(0);
  40.             int columns = matrix.GetLength(1);
  41.             for (int i = 0; i < rows + columns - 1; ++i)
  42.             {
  43.                 int dx, dy, startX, startY;
  44.                 if (i%2 == 0)
  45.                 {
  46.                     dx = 1;
  47.                     startX = (i < rows) ? 0 : i - rows + 1;
  48.                     startY = Math.Min(i, rows - 1);
  49.                 }
  50.                 else
  51.                 {
  52.                     dx = -1;
  53.                     startX = Math.Min(i, columns - 1);
  54.                     startY = (i < columns) ? 0 : i - columns + 1;
  55.                 }
  56.                 dy = -dx;
  57.                 while (startX >= 0 && startX < columns && startY >= 0 && startY < rows)
  58.                 {
  59.                     Console.Write(matrix[startY, startX] + " ");
  60.                     startX += dx;
  61.                     startY += dy;
  62.                 }
  63.             }
  64.         }
  65.     }
  66. }

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


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

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

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

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

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

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