PDA

View Full Version : سوال: اشکال در محاسبه در دترمینان



Salar Ashgi
شنبه 12 مرداد 1387, 16:17 عصر
سلام دوستان ، این کد من قراره دترمینان یک ماتریس n*n رو حساب کنه ، ولی دترمینان

رو غلط حساب میکنه ؟ اشکال کار کجاست ؟


#include <iostream>
#include <conio>
#include <math>
int** minor(int **a,int n,int r){
//---------------
int **b=new int*[n-1];
for(int i=0;i<n-1;i++)
b[i]=new int[n-1];
//---------------
for(int i=0;i<n;i++){
for(int j=0;j<n;j++)
if(i==0 || j==r)
a[i][j]=-1;
}
//---------------
int *c=new int[(n-1)*(n-1)];
int k=0,f=0;
//---------------
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
if(a[i][j]==-1)
continue;
else{
c[k]=a[i][j];
k++;
}
}
}
for(int i=0;i<n-1;i++){
for(int j=0;j<n-1;j++){
b[i][j]=c[f];
f++;
}
}
return b;
}
//=====================================
double det(int**a,int n){
double Sum=0;
if(n==2)
return (a[0][0]*a[1][1] - a[0][1]*a[1][0]);
else{
for(int i=0;i<n;i++){
Sum+= (pow(-1,i)*a[0][i]*det(minor(a,n,i),n-1) );
}
}
return Sum;
}
int main(){
int **a=new int*[3];
for(int i=0;i<3;i++)
a[i]=new int[3];
//-----------------
for(int i=0;i<3;i++){
for(int j=0;j<3;j++)
cin>>a[i][j];
}
cout<<det(a,3);
getch();
}