В данную программу добавить код чтоб считался определитель квадратной матрицы - C#

Узнай цену своей работы

Формулировка задачи:

Console.Write("Введите размер квадратной матрицы ");
            int n = Convert.ToInt32(Console.ReadLine());
            while (n <= 0)
            {
                Console.WriteLine("неверный размер!");
                n = Convert.ToInt32(Console.ReadLine());
            }
            int[,] a = new int[n, n];
            for (int i = 0; i < n; i++)
            {
                for (int j = 0; j < n; j++)
                {
                    Console.WriteLine("Введите {0}-ую строку, {1}-й элемент", i + 1, j + 1);
                    a[i, j] = Convert.ToInt32(Console.ReadLine());
                }
            }
            Console.WriteLine();
 
            for (int i = 0; i < n; ++i)
            {
                for (int j = 0; j < n; j++)
                {
                    Console.Write(a[i, j] + "\t");
                }
                Console.WriteLine();
            }
            Console.ReadLine();

Решение задачи: «В данную программу добавить код чтоб считался определитель квадратной матрицы»

textual
Листинг программы
            if (a.GetLength(0) != a.GetLength(1)) throw new Exception(" Число строк в матрице не совпадает с числом столбцов");
            double det = 0;
            int Rank = a.GetLength(0);
            if (Rank == 1) det = a[0, 0];
            if (Rank == 2) det = a[0, 0] * a[1, 1] - a[0, 1] * a[1, 0];
            if (Rank > 2)
            {
                for (int j = 0; j < a.GetLength(1); j++)
                {
                    det += Math.Pow(-1,0+j)*a[0, j] * Determ(GetMinor(a, 0, j));
                }
            }
//Вот такой метод нужно добавить в класс
public static double[,] GetMinor(int[,] matrix, int row, int column)
        {
            if (matrix.GetLength(0) != matrix.GetLength(1)) throw new Exception(" Число строк в матрице не совпадает с числом столбцов");
            int[,] buf = new int[matrix.GetLength(0)-1,matrix.GetLength(0)-1];
            for (int i=0;i<matrix.GetLength(0);i++)
                for (int j=0;j<matrix.GetLength(1);j++)
                {
                    if ((i!=row) || (j!=column))
                    {
                        if (i > row && j < column) buf[i - 1, j] = matrix[i, j];
                        if (i < row && j > column) buf[i, j - 1] = matrix[i, j];
                        if (i > row && j > column) buf[i - 1, j - 1] = matrix[i,j];
                        if (i < row && j < column) buf[i, j] = matrix[i, j];
                    }
                }
            return buf;
        }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 4.273 из 5
Похожие ответы