В матрице поменять местами строку и столбец - C#
Формулировка задачи:
Как в квадратной матрице порядка N поменять местами строку и столбец, на пересечении которых стоит максимальный элемент?
Решение задачи: «В матрице поменять местами строку и столбец»
textual
Листинг программы
using System;
namespace ConsoleApplication1
{
class Program
{
static void printMatrix(int[,] mx)
{
for (int i = 0; i < mx.GetLength(0); ++i)
{
for (int j = 0; j < mx.GetLength(1); ++j)
{
Console.Write(mx[i, j] + " ");
}
Console.WriteLine();
}
}
static void Main(string[] args)
{
int[,] mx = new int[,]
{ { 1, 2, 3, 4 },
{ 5, 6, 7, 8 },
{ 9, 0, 4, 2},
{ 3, 4, 5, 6} };
Console.WriteLine("Исходная матрица: ");
printMatrix(mx);
int maxRow = -1;
int maxCol = -1;
int maxValue = Int32.MinValue;
for (int i = 0; i < mx.GetLength(0); ++i)
{
for (int j = 0; j < mx.GetLength(1); ++j)
{
if (mx[i, j] > maxValue)
{
maxValue = mx[i, j];
maxRow = i;
maxCol = j;
}
}
}
Console.WriteLine("Минимальный элемент: {0}, позиция: ({1}, {2})", maxValue, maxRow, maxCol);
// Преобразования.
int[] row = new int[mx.GetLength(1)];
int[] col = new int[mx.GetLength(0)];
for (int i = 0; i < mx.GetLength(0); ++i)
{
row[i] = mx[maxRow, i];
col[i] = mx[i, maxCol];
}
for (int i = 0; i < mx.GetLength(1); ++i)
{
mx[maxRow, i] = col[i];
mx[i, maxCol] = row[i];
}
Console.WriteLine("Преобразованная матрица: ");
printMatrix(mx);
}
}
}