Не могу найти простейшую ошибку в методе Main - C#
Формулировка задачи:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
class Matrix {
/// <summary>
/// Поиск определителя матрицы
/// </summary>
/// <param name="matrix"></param>
static public double GetDeterminant(double[,] matrix) {
if (matrix.GetLength(0) != matrix.GetLength(1))
throw new Exception("Матрица должна быть квадратной!");
/// Если матрица 2Г—2, то возвращаем определитель по формуле Крамера
if (matrix.GetLength(0) == 2)
return matrix[0, 0] * matrix[1, 1] - matrix[0, 1] * matrix[1, 0];
int sign = 1;//Знак минора
double result = 0;
int j = 0;//Номер столбца, по которому раскладывается матрица
for (int i = 0; i < matrix.GetLength(0); i++) {
/// Если номер столбца и строки одновременно чётные, то
/// знак будет «+», иначе — «-»
sign = ((i + 1) % 2 == (j + 1) % 2) ? 1 : -1;
result += sign * matrix[i, j] * GetDeterminant(GetMinorMatrix(matrix, i, j));
}
return result;
}
/// <summary>
/// Метод для вычисления минорной матрицы для заданного элемента
/// </summary>
/// <param name="matrix">Исходная матрица</param>
/// <param name="row">Номер строки</param>
/// <param name="col">Номер столбца</param>
static public double[,] GetMinorMatrix(double[,] matrix, int row, int col) {
double[,] result = new double[matrix.GetLength(0) - 1, matrix.GetLength(1) - 1];
int m = 0, k;
for (int i = 0; i < matrix.GetLength(0); i++) {
if (i == row) continue;
k = 0;
for (int j = 0; j < matrix.GetLength(1); j++) {
if (j == col) continue;
result[m, k++] = matrix[i, j];
}
m++;
}
return result;
}
}
}
}Решение задачи: «Не могу найти простейшую ошибку в методе Main»
textual
Листинг программы
using System;
namespace ConsoleApplication1
{
class Matrix
{
/// <summary>
/// Поиск определителя матрицы
/// </summary>
/// <param name="matrix"></param>
static public double GetDeterminant(double[,] matrix)
{
if (matrix.GetLength(0) != matrix.GetLength(1))
throw new Exception("Матрица должна быть квадратной!");
/// Если матрица 2Г—2, то возвращаем определитель по формуле Крамера
if (matrix.GetLength(0) == 2)
return matrix[0, 0] * matrix[1, 1] - matrix[0, 1] * matrix[1, 0];
int sign = 1;//Знак минора
double result = 0;
int j = 0;//Номер столбца, по которому раскладывается матрица
for (int i = 0; i < matrix.GetLength(0); i++)
{
/// Если номер столбца и строки одновременно чётные, то
/// знак будет «+», иначе — «-»
sign = ((i + 1) % 2 == (j + 1) % 2) ? 1 : -1;
result += sign * matrix[i, j] * GetDeterminant(GetMinorMatrix(matrix, i, j));
}
return result;
}
/// <summary>
/// Метод для вычисления минорной матрицы для заданного элемента
/// </summary>
/// <param name="matrix">Исходная матрица</param>
/// <param name="row">Номер строки</param>
/// <param name="col">Номер столбца</param>
static public double[,] GetMinorMatrix(double[,] matrix, int row, int col)
{
double[,] result = new double[matrix.GetLength(0) - 1, matrix.GetLength(1) - 1];
int m = 0, k;
for (int i = 0; i < matrix.GetLength(0); i++)
{
if (i == row) continue;
k = 0;
for (int j = 0; j < matrix.GetLength(1); j++)
{
if (j == col) continue;
result[m, k++] = matrix[i, j];
}
m++;
}
return result;
}
}
class Program
{
static void Main(string[] args)
{
}
}
}