使用函数计算任意矩阵nxn的行列式



伙计们,我想计算任何矩阵nxn的行列式,我尝试了这种方法,但它一直向我显示错误,比如:

56: error: subscripted value is neither array nor pointer nor vector 
return((tab[0][0] * tab[1][1])-(tab[0][1] * tab[1][0]));*

代码:

#include <stdlib.h>
#include <math.h>
#define Tmax 100
int determinant (int dim, int tab);
int main(){
int tab[Tmax][Tmax];
int dim, i, j;
int det=0;
do{
printf("Enter the dimention of the matrix n x n /n");
scanf("%d", &dim);
} while (dim<0 || dim>Tmax);
for (i=0; i<dim; i++){
for (j=0; j<dim; j++){
printf("Enter the element in the %d row and %d column:n", i+1, j+1);
scanf("%d",&tab[i][j]);
}
}
for (i=0; i<dim; i++){
for (j=0; j<dim; j++){
det = det + determinant(dim, tab[i][j]);
}
}
printf("%d", det);
return 0;
}
int determinant (int dim, int tab[][])
int i, j;
if (dim==1)
return tab[0][0];
else if (dim==2)
return((tab[0][0] * tab[1][1])-(tab[0][1] * tab[1][0]));
else
return (pow(-1 , i+1+j+1) * tab[0][j] * determinant(i+1,tab));
}

我能对此做些什么吗?还有什么简单的方法吗?

注意:请不要破坏只是提示

几个问题:这个:

return (pow(-1 , i+1+j+1) * tab[0][j] * determinant(i+1,tab));

正在使用i&CCD_ 2而不首先被初始化。更改:

int i, j; 

收件人:

int i=0, j=0;

关于:

error: subscripted value is neither array nor pointer nor vector return((tab[0][0] * tab[1][1])-(tab[0][1] * tab[1][0]));*"_

以下原型:

int determinant (int dim, int tab); 

与函数定义不匹配(无论如何,这在语法上都不正确,[][]数组的形成是不合法的C(:

int determinant (int dim, int tab[][]){

以下语法正确:

int determinant (int dim, int tab){//fix argument list to match prototype
int i=0, j=0;
if (dim==1)
return tab;
else if (dim==2)
return((tab * tab)-(tab * tab));
else
return (pow(-1,i+1+j+1) * tab * determinant(i+1,tab));
} 

但逻辑上有问题。建议对nxn行列式的算法进行回顾和重构。

提示:这里有一个类似的问题(使用可行的算法(。请参阅唯一问题的公认答案。

最新更新