gpt4 book ai didi

c++ - 如何将固定大小的数组转换为指针数组上的指针

转载 作者:搜寻专家 更新时间:2023-10-31 02:04:17 24 4
gpt4 key购买 nike

我正在尝试计算行列式,但构建失败。有代码,错误下降的地方。

void getCofactor(double mat[N][N], double temp[N][N], int p, int q, int n)
{
int i = 0, j = 0;

// Looping for each element of the matrix
for (int row = 0; row < n; row++)
{
for (int col = 0; col < n; col++)
{
// Copying into temporary matrix only those element
// which are not in given row and column
if (row != p && col != q)
{
temp[i][j++] = mat[row][col];

// Row is filled, so increase row index and
// reset col index
if (j == n - 1)
{
j = 0;
i++;
}
}
}
}
}

double determinant(double **mat, int n)
{
double D = 0; // Initialize result

// Base case : if matrix contains single element
if (n == 1)
return mat[0][0];

double temp[N][N]; // To store cofactors

int sign = 1; // To store sign multiplier

// Iterate for each element of first row
for (int f = 0; f < n; f++)
{
// Getting Cofactor of mat[0][f]
getCofactor(mat, temp, 0, f, n); //ERORRRRRRRRRRR
D += sign * mat[0][f] * determinant(temp, n - 1);

// terms are to be added with alternate sign
sign = -sign;
}

return D;
}

如何解决这个问题?ma​​in.cpp:49:50: 错误:无法将参数“1”的“double (*)[4]”转换为“double”至“double determinant(double**, int)”* * D += sign * mat[0][f] * determinant(temp, n - 1);

最佳答案

二维数组和指向另一个指针的指针不是一回事。为什么需要对两个不同的函数以不同的方式使用 mat,例如函数 getCofactor() 中的 double mat[N][N] > 和 double **matdeterminant() 函数中?由于您知道 N 变量的值是多少,您可以将其用作 determinant() 中的 double mat[N][N]功能也一样。

double determinant(double mat[N][N], int n)
{
double D = 0; // Initialize result

// Base case : if matrix contains single element
if (n == 1)
return mat[0][0];

double temp[N][N]; // To store cofactors

int sign = 1; // To store sign multiplier

// Iterate for each element of first row
for (int f = 0; f < n; f++)
{
// Getting Cofactor of mat[0][f]
getCofactor(mat, temp, 0, f, n); //ERORRRRRRRRRRR
D += sign * mat[0][f] * determinant(temp, n - 1);

// terms are to be added with alternate sign
sign = -sign;
}

return D;
}

一旦您进行了我提到的更改,您的错误就会得到修复。希望对您有所帮助。

补充:我想纠正一些可能引起误解的地方;

Array with two dimensions and a pointer to another pointer are not the same things.

请注意,您可以拥有类似于带指针的多维数组的东西。但是它们在RAM中的占用和存储方式是不一样的。请注意,多维数组是单个内存块。为了更好地理解它,请检查以下问题;

Why can't we use double pointer to represent two dimensional arrays?

关于c++ - 如何将固定大小的数组转换为指针数组上的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53762574/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com