Не могу найти простейшую ошибку в методе 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) { } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д