Отобразить симметрично относительно вертикальной оси секторы матрицы - C# (181676)
Формулировка задачи:
Написать программу, заполняющую и отображающую на экране двумерный массив 9х9.
Заполнить матрицу случайными числами. Отобразить симметрично относительно вертикальной оси секторы матрицы, которые лежат влево и вправо от главной и побочной диагоналей.
P.S. Нужно без всяких заумных вещей написать код. Заранее спасибо!)
Решение задачи: «Отобразить симметрично относительно вертикальной оси секторы матрицы»
textual
Листинг программы
using System;
namespace CleanConsole
{
internal class Program
{
static int[,] CreateMatrix(int size)
{
var random = new Random();
var matrix = new int[size, size];
for (int x = 0; x < size; ++x)
for (int y = 0; y < size; ++y)
matrix[x, y] = random.Next(10);
return matrix;
}
static void Print(int[,] matrix)
{
for (int y = 0; y < matrix.GetLength(1); ++y)
{
for (int x = 0; x < matrix.GetLength(0); ++x)
Console.Write("{0,2}", matrix[x, y]);
Console.WriteLine();
}
}
static void Transform(int[,] matrix)
{
int size = matrix.GetLength(0);
for (int y = 0; y < size; ++y)
{
int count = (y <= size/2) ? y : size/2 - (y - size/2);
for (int x = 0; x <= count; ++x)
Swap(ref matrix[x, y], ref matrix[size - x - 1, y]);
}
}
static void Swap(ref int a, ref int b)
{
var t = a;
a = b;
b = t;
}
static void Main(string[] args)
{
var matrix = CreateMatrix(9);
Print(matrix);
Console.WriteLine();
Transform(matrix);
Print(matrix);
}
}
}