Отобразить правую половину матрицы на левую зеркально симметрично относительно вертикальной оси - 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();
- }
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д