행렬 행렬식을 계산하는 C 또는 C++ 프로그램을 찾고 있습니다!

다음은 제가 원래 작성한 행렬 클래스로, 정사각 행렬의 결정 함수를 구현합니다: int det(matrix);

//matrix.h

//********************************

# ifndef 행렬_h

# 행렬_h 정의

클래스 행렬

{

private:

int m;

int n;

double arr[8][8];

공개:

행렬();

행렬( double);

p>

void set();//행렬에 할당;

void show();//행렬을 화면에 표시;

friend int homotype(matrix ,matrix);//같은 유형인지 여부;

friend int multipliable(matrix,matrix);

//행렬을 곱할 수 있는지 확인

친구 행렬 연산자 +(matrix,matrix);

//행렬 더하기, 더하기 기호 오버로드;

친구 행렬 연산자 -(matrix,matrix);

//행렬 기계 빼기, 빼기 기호 오버로드;

friend 행렬 add(matrix,matrix);

//행렬 추가;

friend 행렬 빼기(행렬,행렬);

//행렬 빼기

친구 행렬 곱하기(행렬,행렬);

//행렬 위상 곱하기

friend 행렬 연산자 *(matrix, 행렬);

//행렬 곱셈, 곱셈 기호 오버로드;

friend double det(matrix) ;

//정사각 행렬의 행렬식을 찾습니다;

int issquare()

{

return m==n;

}

//정사각 행렬인지 확인;

행렬 left(int x, int y);

//요소 찾기 보조인자 of arr[x][y](x,y는 0부터 시작);

};

# endif

//**** ** *************************

//matrix.cpp

//다음은 구현입니다. 클래스의 멤버 및 친구 기능

//************************************ *

# 포함

# 포함 "matrix.h"

matrix::matrix()

{

m = 8;

n = 8;

for(int i=0;i

{

for(int j=0;j

arr[i][j] = 0;

}

}

행렬::행렬(이중 x)

{

m = 1;

n = 1;

arr[0][0] = x;

}

void 행렬::set()

{

cout<<"행렬의 유형을 설정합니다(?*?)"<

cin>>m>>n;

cout<<"이제 행렬의 요소를 입력하세요:"<

for(int i=0; i

{

for(int j=0;j

cin>>arr[i][j ];

}

}

void 행렬::show()

{

cout<< "이것은 행렬입니다:"<

for(int i=0;i

{

for(int j =0;j

{

cout<

}

cout<

}

}

int 호모타입(행렬 x,행렬 y)

{

if(x.m==y.m&&x.n==y.n)

1을 반환;

else

0을 반환;

}

int 곱셈 가능(행렬 x,행렬 y)

{

if(x.n==y.m)

1을 반환;

else

0을 반환;

}

행렬 추가(행렬 x,행렬 y)

{

행렬 z;

if(homotype(x,y))

{

z.m = x.m; p>

z.n = x.n;

for(int i=0;i

for(int j=0;j

z.arr[i][j] = x.arr[i][j] + y.arr[i][j];

return z;

}

else

{

cout<<"추가할 수 없습니다!"<

return z;

}

}

행렬 연산자 +(행렬 x,행렬 y)

{

return add (x,y);

}

행렬 빼기(행렬 x,행렬 y)

{

행렬 z;

p>

if(homotype(x,y))

{

z.m = x.m;

z.n = x.n;

for(int i=0;i

for(int j=0;j

z.arr[i][j] = x.arr[i][j] - y.arr[i][j];

return z;

}

else

{

cout<<"추가할 수 없습니다!"<

return z;

}

}

행렬 연산자 -(행렬 x,행렬 y)

{

return minus(x,y);

}

행렬 곱하기(행렬 x,행렬 y)

{

행렬 z;

if(x.n!=y.m)

{

cout<<"두 행렬은 곱할 수 없습니다."<

return z;

}

for(int i=0;i

{

for( int j=0;j

{

for(int k=0;k

z.arr[ i][j] += x.arr[i][k]*y.arr[k][j];

}

}

z.m = x.m;

z.n = y.n;

return z;

}

행렬 연산자 *(행렬 x,행렬 y)

{

행렬 z;

z = 곱하기(x,y);

z를 반환;

}

행렬 행렬::left(int x,int y)

{

행렬 leftmatrix;

if((x >=m)||(y>=n))

{

cout<<"errer"<

return leftmatrix;

}

/* if(!issquare())

{

cout<<"정사각형 행렬이 아닙니다!"<

return *this;

}//*/

leftmatrix.m = m - 1;

leftmatrix.n = n - 1;

int testx = 0;

int testy = 0;

for(int i=0;i

{

testy = 0;

for(int j=0;j

{< / p>

if(i==x)

testx = 1;

if(j==y)

testy = 1;

if((!testx)&&(!testy))

leftmatrix.arr[i] [j] = this->arr[i][j];

else if(testx&&(!testy))

leftmatrix.arr[i][j] = this- >arr[i+1][j];

else if((!testx)&&testy)

leftmatrix.arr[i][j] = this->arr[i ][j+1];

else

leftmatrix.arr[i][j] = this->arr[i+1][j+1];

}

}

return leftmatrix;

}

double det(matrix x)//재귀 알고리즘

p>

{

if(!x.issquare())

{

cout<<"정사각형 행렬이 아닙니다!"<

9.99를 반환;

}

if(x.m==0)

0을 반환;

else if(x.m==1)

return x.arr[0][0];

else if(x.m==2)

return ( x .arr[0][0]*x.arr[1][1] - x.arr[0][1]*x.arr[1][0]);

else< / p>

{

double num = 0;

int a = 1;

for(int i=0;i

{

num = num + a*x.arr[0][i]*det(x.left(0,i));

//0번째 줄을 따라 확장

a = -a;

}

return num;

}

}

//************************************* *****