Вывести элементы матрицы на экран в следующем порядке - 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;
}
}
}
}
}