我正在尝试编写一个代码来查找给定矩阵的逆矩阵。 我不断收到同样的错误:
错误 5 错误 C2440:“function”:无法从“double”转换为“double (*)”
这是我的代码,不确定它是否有效:
int swap_rows(double mat[SIZE][SIZE], int row1, int row2)
{
int i, j, temp;
for (j = 0; j < SIZE; i++)
{
temp = mat[row1][j];
mat[row1][j] = mat[row2][j];
mat[row2][j] = temp;
}
return 0;
}
int subtract_rows(double mat[SIZE][SIZE], int row1, int row2, double mul)
{
int i;
for (i = 0; i < SIZE; i++)
{
mat[row1][i] = mat[row1][i] - mul*mat[row2][i];
}
return 0;
}
int inverse_matrix(double mat[][SIZE], double inv[][SIZE], int size)
{
int i, j, k, w;
double c, b;
for (i,j = 0; i,j < SIZE; i++)
{
if (mat[i][j] = 0)//cheking to see left is not zero
{
for (k = i + 1; k < SIZE; k++)//if zero swap rows with one that not zero
{
if (mat[k][j] != 0)
{
swap_rows(mat, i, k);//swap
swap_rows(inv, i, k);
}
else
return 0;//didnt find not zero return and exit
}
}
c = mat[i][j];// c is the left number
for (k = 0; k < SIZE; k++)
{
mat[i][k] /= c;//divide everyone by c, now i have one
inv[i][k] /= c;
}
for (k = 0; k < SIZE; k++)
{
b = mat[k][j];
if (k != i)
{
if (mat[k][j] > 0)
{
subtract_rows(mat[SIZE][SIZE], k, i, b);// ***error points to this line***
subtract_rows(inv[SIZE][SIZE], k, i, b);
}
else
{
subtract_rows(mat[SIZE][SIZE], k, i, -b);
subtract_rows(inv[SIZE][SIZE], k, i, -b);
}
}
}
}
return 0;
}
有人能看出问题出在哪里吗?
最佳答案
mat[SIZE][SIZE]
使用下标运算符对 mat
进行索引,产生 double
.
不过,double mat[][SIZE]
是一个double*[SIZE]
。
明显不匹配。
要将数组(无论如何都会转换为指针)传递给函数,只需使用 mat
:
subtract_rows(mat, k, i, b);
对其他 subtract_rows
调用执行类似的操作。
关于无法从 'double' 转换为 'double (*)',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33872775/