Переставить строки и столбцы так, чтобы все отрицательные элементы расположились на главной диагонали матрицы - C#
Формулировка задачи:
Помогите пожалуйста:
Задана вещественная матрица размером n*m. Считая, что в каждой строке и каждом столбце исходной матрицы содержится ровно по одному отрицательному элементу переставить строки и столбцы так, чтобы все отрицательные элементы расположились на главной диагонали.
Решение задачи: «Переставить строки и столбцы так, чтобы все отрицательные элементы расположились на главной диагонали матрицы»
textual
Листинг программы
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ciber
{
class Program
{
static void Main()
{
Console.Write("Введите число строк матрицы: ");
int n = int.Parse(Console.ReadLine());
int[,] matrix = new int[n, n];
Fill(matrix, n, n);
Console.WriteLine("Матрица: ");
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
{
Console.Write("{0}", matrix[i, j]);
}
Console.Write("\n");
}
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
{
if (matrix[i, j] < 0)
{
for (int k = 0; k < n; k++)
{
int s = matrix[j, k];
matrix[j, k] = matrix[i, k];
matrix[i, k] = s;
}
}
}
}
Console.WriteLine("Матрица: ");
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
{
Console.Write("{0}", matrix[i, j]);
}
Console.Write("\n");
}
Console.ReadLine();
}
static void Fill(int[,] array, int l, int k)
{
Console.WriteLine("Введите элементы матрицы:");
for (int i = 0; i < l; i++)
{
for (int j = 0; j < l; j++)
{
array[i, j] = int.Parse(Console.ReadLine());
}
}
}
}
}