Написать программу, производящую различные операции над матрицами - 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;
}