56 lines
1.8 KiB
C#
56 lines
1.8 KiB
C#
|
using System;
|
|||
|
using System.Collections.Generic;
|
|||
|
using System.Linq;
|
|||
|
using System.Numerics;
|
|||
|
using System.Text;
|
|||
|
using System.Threading.Tasks;
|
|||
|
|
|||
|
namespace ConsoleApp1
|
|||
|
{
|
|||
|
public static class Extention
|
|||
|
{
|
|||
|
public static int[,] CreateMatrixWithoutColumn(this int[,] matrix, int column)
|
|||
|
{
|
|||
|
var result = new int[matrix.GetLength(0), matrix.GetLength(1) - 1];
|
|||
|
for (int i = 0; i < matrix.GetLength(0); i++)
|
|||
|
{
|
|||
|
for (int j = 0; j < matrix.GetLength(1) - 1; j++)
|
|||
|
{
|
|||
|
result[i, j] = j < column ? matrix[i, j] : matrix[i, j + 1];
|
|||
|
}
|
|||
|
}
|
|||
|
return result;
|
|||
|
}
|
|||
|
|
|||
|
public static int[,] CreateMatrixWithoutRow(this int[,] matrix, int row)
|
|||
|
{
|
|||
|
var result = new int[matrix.GetLength(0) - 1, matrix.GetLength(1)];
|
|||
|
for (int i = 0; i < matrix.GetLength(0) - 1; i++)
|
|||
|
{
|
|||
|
for (int j = 0; j < matrix.GetLength(1); j++)
|
|||
|
{
|
|||
|
result[i, j] = i < row ? matrix[i, j] : matrix[i + 1, j];
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
return result;
|
|||
|
}
|
|||
|
|
|||
|
public static double CalculateDeterminant(this int[,] matrix)
|
|||
|
{
|
|||
|
if (matrix.GetLength(0) == 2)
|
|||
|
{
|
|||
|
return matrix[0, 0] * matrix[1, 1] - matrix[0, 1] * matrix[1, 0];
|
|||
|
}
|
|||
|
double result = 0;
|
|||
|
for (var j = 0; j < matrix.GetLength(0); j++)
|
|||
|
{
|
|||
|
result += (j % 2 == 1 ? 1 : -1) * matrix[1, j] *
|
|||
|
matrix.CreateMatrixWithoutColumn(j).CreateMatrixWithoutRow(1).CalculateDeterminant();
|
|||
|
}
|
|||
|
//Console.WriteLine("Ко мне пришли с размером " + matrix.GetLength(0));
|
|||
|
return result;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|