Написать программу, производящую различные операции над матрицами - C#

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

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

Добрый вечер, необходимо написать программу, производящую различные операции над матрицами, есть код:
using System;
using System.Collections.Generic;
using System.Text;
 
namespace ConsoleApplication2
{
    class matrix
    {
        int n;
        int[,] arr;
        public void enter()
        {
            Console.WriteLine("Введите размерность:\n");
            n = int.Parse(Console.ReadLine());
            arr = new int[n, n];
            for (int i = 0; i < n; i++)
            {
                for (int j = 0; j < n; j++)
                {
                    Console.WriteLine("Введите " + i + " " + j + " элемент:");
                    arr[i, j] = int.Parse(Console.ReadLine());
                }
            }
        }
        public void output()
        {
            for (int i = 0; i < n; i++)
            {
                for (int j = 0; j < n; j++)
                {
                    Console.WriteLine("\nЭлемент " + i + " " + j + " равен:\n" + arr[i, j]);
                }
            }
        }
        public void addmat(matrix temp)
        {
            for (int i = 0; i < n; i++)
            {
                for (int j = 0; j < n; j++)
                {
                    arr[i, j] = temp.arr[i, j] + arr[i, j];
                }
            }
        }
        public void multinum(int k)
        {
            for (int i = 0; i < n; i++)
            {
                for (int j = 0; j < n; j++)
                {
                    arr[i, j] *= k;
                }
            }
        }
        public void multimat(matrix tmp)
        {
            int[,] temp1 = new int[n, n];
            for (int i = 0; i < n; i++)
            {
                for (int j = 0; j < n; j++)
                {
                    temp1[i, j] = 0;
                }
            }
            for (int i = 0; i < n; i++)
            {
                for (int j = 0; j < n; j++)
                {
                    for (int l = 0; l < n; l++)
                        temp1[i, j] += arr[i, l] * tmp.arr[l, j];
                }
            }
            for (int i = 0; i < n; i++)
            {
                for (int j = 0; j < n; j++)
                {
                    arr[i, j] = temp1[i, j];
                }
            }
        }
        public void transpon()
        {
            int[,] temp;
            temp = new int[n, n];
            for (int i = 0; i < n; i++)
            {
                for (int j = 0; j < n; j++)
                {
                    temp[j, i] = arr[i, j];
                }
            }
            for (int i = 0; i < n; i++)
            {
                for (int j = 0; j < n; j++)
                {
                    arr[i, j] = temp[i, j];
                }
            }
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            matrix A = new matrix(); A.enter();
            matrix B = new matrix(); B.enter();
            matrix C = new matrix(); C.enter();
            A.multinum(4);
            A.multimat(B);
            C.transpon();
            A.addmat(C);
            A.output();
            Console.ReadKey();
        }
    }
}
Помогите пожалуйста дописать всего один метод для нахождения определителя квадратной матрицы, буду очень благодарен.

Решение задачи: «Написать программу, производящую различные операции над матрицами»

textual
Листинг программы
double determ(double **b, int n, int m) //  функция поиска определителя
{    
//double **b - матрица исходная
        double det = 0;
        if(n == 1)
        {
            det = b[0][0];
        }
        else if(n == 2)
        {
            det = b[0][0]*b[1][1]-b[0][1]*b[1][0];
        }
        else
        {
            double ** matr=new double*[n-1];
            for(int i=0;i<n;++i)
                {
                    for(int j=0;j<n-1;++j)
                        {
                                if(j<i) 
                                    matr[j]=b[j];
                                else
                                    matr[j]=b[j+1];
                        }
                    det+=pow((double)-1, (i+j))*determ(matr, n-1, m-1)*b[i][n-1];
                }
                delete[] matr;
        }
        return det;
}

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


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

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

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