輸入A建立A*A的指標陣列
再給每一個元墅亂數產生值


 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
#include "stdafx.h"
#include "iostream"
#include <math.h>
#include <stdlib.h>
using namespace std;
int determinantsol(int a,int **Matrix);

int _tmain(int argc, _TCHAR* argv[])
{
int a=0,b=0,sum=0;
int ** Matrix1;
cout<<"請輸入a建立a*a的方陣"<<endl;
cin>>a;
cin.get();
cout<<"a*b等於"<<endl;
Matrix1= new int*[a];
for(int i=0;i<a;i++){
Matrix1[i]=new int[a];
for(int j=0;j<a;j++){
Matrix1[i][j]=rand() % 10+1;
cout<< Matrix1[i][j]<<" " ;
}
cout<<endl;
}
sum=abs(determinantsol(a,Matrix1));//取絕對值
cout<<"行列式運算結果為"<<sum<<endl;
return 0;
}

int determinantsol(int a,int** Matrix){
int ** Matrixitem=new int* [a-1];
int sum=0,i=0,p=0,q=0;
if(a==1){
sum=Matrix[0][0];
}else{
for (i=0; i<a-1; i++){
Matrixitem[i] = new int[a-1];
}
for (i=0; i<a; i++) {
for (p=0; p<a-1; p++) {
for (q=0; q<a-1; q++) {
if (q<i) Matrixitem[p][q] = Matrix[p+1][q];
if (q>=i) Matrixitem[p][q] = Matrix[p+1][q+1];
}
}
sum = sum + (pow((double)-1, i % 2 ) * Matrix[0][i] * determinantsol( a-1,Matrixitem));//1和-1
}
}
return sum;
}
arrow
arrow
    全站熱搜

    戮克 發表在 痞客邦 留言(0) 人氣()