无法在C中分割2D数组中的行

时间:2017-10-20 07:13:08

标签: c arrays function

所以我目前正在开发一个在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,因为这是一个更大的项目的一部分,表明它不会包含它。

1 个答案:

答案 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,但这当然不是您的直接错误。