Получить новую матрицу, переставляя ее блоки - C#
Формулировка задачи:
Дана действительная квадратная матрица порядка 2n. Получить новую матрицу,
переставляя ее блоки размером n x n: а) крест-накрест; б) по часовой стрелке (левый
верхний блок становится правым верхним, правый верхний – правым нижним и т.д.). Вижуал студио 2012 надо пж!
Решение задачи: «Получить новую матрицу, переставляя ее блоки»
textual
Листинг программы
using System;
namespace ConsoleApplication5
{
class Program
{
static void Main(string[] args)
{
int[,] array = new int[4, 4] { { 1, 1, 2, 2 },{ 1,1,2,2},{ 3,3,4,4},{ 3,3,4,4} };
Print(array);
Console.WriteLine();
Rotate(array);
Print(array);
Console.WriteLine();
CrissCross(array);
Print(array);
Console.ReadKey(true);
}
public static void Rotate(int[,] array)
{
int tmp, n = array.GetLength(0) / 2;
for(int i = 0; i < n; i++)
{
for(int j = 0; j < n; j++)
{
tmp = array[i + n, j];
array[i + n, j] = array[i + n, j + n];
array[i + n, j + n] = array[i, j + n];
array[i, j + n] = array[i, j];
array[i, j] = tmp;
}
}
}
public static void CrissCross(int[,] array)
{
int tmp, n = array.GetLength(0) / 2;
for(int i = 0; i < n; i++)
{
for(int j = 0; j < n; j++)
{
tmp = array[i, j];
array[i, j] = array[i + n, j + n];
array[i + n, j + n] = tmp;
tmp = array[i + n, j];
array[i + n, j] = array[i, j + n];
array[i, j + n] = tmp;
}
}
}
public static void Print(int[,] array)
{
for(int i = 0; i < array.GetLength(0); i++)
{
for(int j = 0; j < array.GetLength(1); j++)
{
Console.Write(array[i, j] + " ");
}
Console.WriteLine();
}
}
}
}