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

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

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

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

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

textual
Листинг программы
using System;
 
namespace CleanConsole
{
    class Program
    {
        static void Main(string[] args)
        {
            var matrix = CreateRandomMatrix(4, 4);
            PrintMatrix(matrix);
            Console.WriteLine();
            PrintZigZag(matrix);
        }
 
        static int[,] CreateRandomMatrix(int rows, int columns)
        {
            var rand = new Random();
            var matrix = new int[rows, columns];
            for (int y = 0; y < rows; ++y)
                for (int x = 0; x < columns; ++x)
                    matrix[y, x] = rand.Next(10);
            return matrix;
        }
 
        static void PrintMatrix(int[,] matrix)
        {
            for (int y = 0; y < matrix.GetLength(0); ++y)
            {
                for (int x = 0; x < matrix.GetLength(1); x++)
                {
                    Console.Write($"{matrix[y, x],2}");
                }
                Console.WriteLine();
            }
        }
 
        static void PrintZigZag(int[,] matrix)
        {
            int rows = matrix.GetLength(0);
            int columns = matrix.GetLength(1);
            for (int i = 0; i < rows + columns - 1; ++i)
            {
                int dx, dy, startX, startY;
                if (i%2 == 0)
                {
                    dx = 1;
                    startX = (i < rows) ? 0 : i - rows + 1;
                    startY = Math.Min(i, rows - 1);
                }
                else
                {
                    dx = -1;
                    startX = Math.Min(i, columns - 1);
                    startY = (i < columns) ? 0 : i - columns + 1;
                }
                dy = -dx;
                while (startX >= 0 && startX < columns && startY >= 0 && startY < rows)
                {
                    Console.Write(matrix[startY, startX] + " ");
                    startX += dx;
                    startY += dy;
                }
            }
        }
    }
}

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


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

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

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