Отобразить правую половину матрицы на левую зеркально симметрично относительно вертикальной оси - C# (182100)
Формулировка задачи:
Привет!
Уже долго вожусь с этой задачей, помогите пожалуйста!=) Понимаю, что такая задача уже есть на форуме, но она на С++, перевести не получилось=( Заполнить матрицу случайными числами. Отобразить правую половину матрицы на левую зеркально симметрично относительно вертикальной оси. Буду рад любой помощи=)Решение задачи: «Отобразить правую половину матрицы на левую зеркально симметрично относительно вертикальной оси»
textual
Листинг программы
using System;
class Program
{
static void Main(string[] args)
{
var numbers = Console.ReadLine().Split();
int width = int.Parse(numbers[0]);
int height = int.Parse(numbers[1]);
var matrix = new int[width, height];
FillRandom(matrix);
Print(matrix);
Console.WriteLine();
MirrorTransform(matrix);
Print(matrix);
}
static void FillRandom(int[,] matrix)
{
var random = new Random();
for (int x = 0; x < matrix.GetLength(0); ++x)
for (int y = 0; y < matrix.GetLength(1); ++y)
matrix[x, y] = random.Next(100);
}
static void MirrorTransform(int[,] matrix)
{
for (int x = 0; x < matrix.GetLength(0) / 2; ++x)
for (int y = 0; y < matrix.GetLength(1); ++y)
Swap(ref matrix[x, y], ref matrix[matrix.GetLength(0) - x - 1, y]);
}
private static void Swap(ref int x, ref int y)
{
int temp = x;
x = y;
y = temp;
}
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,4}", matrix[x, y]);
Console.WriteLine();
}
}
}