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;
|
||
}
|
||
}
|
||
}
|