所以我目前正在开发一个在2D数组(矩阵)上实现Gauss-Jordan消除的程序,我目前正在尝试让第一行通过第一个分支来划分第一行:
void Gauss(int i, int j, int size, int mat [size][size])
{
int x = 0;
for(int i = 0; i < size;i++) {
for(int j = 0; j < size; j++) {
if(mat[i][j]== mat[i][i]) {
mat[0][i] = mat[0][i]/mat[i][i];
mat[i][i] = mat[i][i]/mat[i][i];
mat[i][j] = mat[i][i];
}
}
}
}
这是我原来的垫子:
2 2 4
2 1 7
1 3 5
以后是我的垫子:
1 2 0
2 1 7
1 3 1
程序将第一行与每个对角线分开。有人可以解释为什么会发生这种情况以及如何解决它的提示吗?此外,我不必担心任何枢轴已经为0,因为这是一个更大的项目的一部分,表明它不会包含它。
答案 0 :(得分:0)
改变这个:
void Gauss(int i, int j, int size, int mat [i][j])
到此:
void Gauss(int i, int j, int size, int mat [size][size])
此mat[i][j] = mat[i][i];
没有任何用处,因为它只会在mat[i][j]== mat[i][i]
时执行。
在这种应用程序中,人们通常使用float
而不是int
,但这当然不是您的直接错误。