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