【问题标题】:Having trouble dividing a row in a 2D array in C在 C 中划分二维数组中的行时遇到问题
【发布时间】:2017-10-20 07:13:07
【问题描述】:

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

【问题讨论】:

  • int mat [i][j]){ --> int mat [size][size]){ ?
  • 您确定要将ints 用于您的矩阵吗?
  • 您应该首先检查 mat[i][i] 是否为 0(不除以 0)。请提供更多数据,说明您获得了什么结果以及应该是什么结果。
  • 是的,我应该使用花车。我想看看我是否可以先操作一个由偶数组成的简单矩阵,然后再转到我的矩阵中更复杂的数字。

标签: c arrays function


【解决方案1】:

改变这个:

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

【讨论】:

  • 谢谢,真不敢相信我错过了。
猜你喜欢
  • 2013-10-26
  • 2021-12-29
  • 2014-01-25
  • 1970-01-01
  • 2014-05-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多