【发布时间】:2015-01-31 08:50:02
【问题描述】:
我一直在寻找有关如何创建矩阵行列式计算器的代码,我从 (Matrix determinant algorithm C++) 找到了代码。
我采用代码进行尝试,但我意识到我不知道如何将多维数组传递给函数,而没有先定义它的维度(我出错了)。
那么,您能否告诉我如何在不先定义其维度的情况下将多维数组传递给函数(即int a[MAX][MAX] 是一个参数,什么是“MAX”)。
希望我的问题很清楚,谢谢你的帮助。
这是(编辑的)代码: - 样本输入将是方阵及其大小。
int determinant(int oMat[][], int n){
int sMat[n][n]; //Temporary matrix
int det = 0; //Initializing 'det'.
if(n==1){
det = oMat[0][0]; //Calculating.
return det;
}else if(n==2){
det = oMat[0][0]*oMat[1][1] - oMat[1][0]*oMat[0][1]; //Formula for 2x2.
return det;
}else{
for(int p=0; p<n; p++){ //Selecting 'oMat' row one.
int k=0; //'sMat' rows.
int m=0; //'sMat' columns.
//Creating the temporary matrix 'sMat'.
for(int i=1; i<n; i++){ //for 'oMat' rows.
for(int j=0; j<n; j++){
if(j==p){
continue;
}
sMat[k][m] = oMat[i][j]; m++;
if(m==n-1){
k++; //Go to the next row.
m = 0; //Start at column one (index 0).
}
}
}
det = det + oMat[0][p] * pow(-1,p) * determinant(sMat, n-1);
}
return det;
}
}
【问题讨论】:
-
你的意思一定是如何传递多维度数组而不是解析?
-
如何通过 我的意思是,我刚刚编辑了它。谢谢。
-
请编辑问题以包含示例输入、您实际尝试过的代码、代码的实际和预期输出以及尽可能多的其他详细信息。
-
尝试将模板函数写成template
T dterm(T (&my_matrix)[R][C]){...}
标签: c++