我有这个错误,但我相信我有相同的数据类型,我没有做任何错误,我想。它用于计算矩阵的行列式。有人帮忙。我实在想不出为什么我有这样的错误:(错误:无法将参数'1'转换为'int(*)[(((sizetype)(((ssizetype)n)+ -1))+ 1)]'''int(*)[100] int determine(int(*)[100],int)'|
#include <iostream>
#include <stdio.h>
#include <cmath>
using namespace std;
double determinant(double matrix[100][100], int order)
{
double det, temp[100][100]; int row, col;
if (order == 1)
return matrix[0][0];
else if (order == 2)
return ((matrix[0][0] * matrix[1][1]) - (matrix[0][1] * matrix[1][0]));
else
{
for (int r = 0; r < order; r++)
{
row = 0;
col = 0;
for (int i = 1; i < order; i++)
{
for (int j = 0; j < order; j++)
{
if (j == r)
continue;
temp[row][col] = matrix[i][j];
col++;
}
row++;
}
det += (matrix[0][r] * pow(-1, r) * determinant(temp, order - 1));
}
return det;
}
}
int main()
{
int n;
cout << "Enter the dimension: ";
cin >> n;
double elem[n][n];
for (int i = 0; i < n; i++)
{
cout << "Enter row " << i << ": ";
for (int j = 0; j < n; j++)
{
cin >> elem[i][j];
}
cout << endl;
}
cout << determinant(elem, n);
return 0;
}
我刚刚回答了一个类似的问题。请看http://stackoverflow.com/a/26210551/434551 – 2014-10-06 06:09:42
非常感谢你! – Jessie 2014-10-06 06:19:08
您将不会获得该功能。考虑重写整个程序而不递归。 – Lundin 2014-10-06 06:21:54