C++ 更新for循环中的变量

C++ 更新for循环中的变量,c++,C++,我正在写一个算法来做高斯消去。我不知道为什么计算后矩阵的元素没有变化。我想我可能需要以不同的方式定义元素,但我不知道如何定义。有没有其他简单的方法来解决这个问题 #include <iostream> #include <cmath> using namespace std; int main() { int n, i, j, k; float mult; cout << "Enter the number of equations\

我正在写一个算法来做高斯消去。我不知道为什么计算后矩阵的元素没有变化。我想我可能需要以不同的方式定义元素,但我不知道如何定义。有没有其他简单的方法来解决这个问题

#include <iostream>
#include <cmath>
using namespace std;
int main()
{
    int n, i, j, k;
    float mult;

    cout << "Enter the number of equations\n";
    cin >> n;

    int a[n][n], x[n], b[n];
    for (i=0;i<n;i++)
    {
        for (int j=0;j<n;j++)
        {
            cout << "A[" << i+1 << "][" << j+1 << "]=";
            cin >> a[i][j];
        }
    }

    for (i = 0; i<n; i++)
    {
        cout << "b[" << i+1 << "] is ";
        cin >> a[i][n];
    }


    for (j = 0; j< n; j++)
        for (i=j+1; i< n ; i++)
            mult = a[i][j] / a[j][j];
            for (k = j+1; k < n ; k++)
                a[i][k] = a[i][k] - mult * a[j][k];

    x[n-1] = a[n-1][n]/ a[n-1][n-1];
    for (i = n-2; i=0; i--)
        for (j=n-1; j = i+1; j--)
            a[i][n] = a[i][n] - a[i][j]*x[j];
        x[i] = a[i][n] / a[i][i];
}
#包括
#包括
使用名称空间std;
int main()
{
int n,i,j,k;
浮骡;
cout>n;
int a[n][n],x[n],b[n];

对于(i=0;i我发现您的代码有几个问题:

VLAS1不是标准C++ <标准> C++ >代码> int a[n] [n],x[n],b[n]; >无效,因为<>代码> n>代码>在编译时不是常数。即使某些编译器允许,也不要使用它。使用 最后一行代码不是任何循环的一部分 你应该使用IDE或简单的编辑器来修正你的意图,然后你会看到最后一行
x[i]=a[i][n]/a[i][i];
不是任何循环的一部分。我的建议是:始终在
之后使用parantises

最后的循环具有错误的条件 (i=n-2;i=0;i-)
的最后一个循环
的条件是
i=0
。这将把值0分配给
i
,然后将
i
作为条件进行计算,因为
i
为零,它将退出循环。您可能想使用
=
来比较这些值

对于(j=n-1;j=i+1;j--)的嵌套循环
也是如此。
.2


1可变长度数组

2实际上,对于任何
n!=0

请回答您的问题,并显示输入、实际和预期输出的最小示例。
a[i][n]
a[n-1][n]
具有未定义的行为。请修复您的索引。您从未对任何事情使用
b
。这可能是一个问题。。。(在编译器中启用更多警告。)帮自己一个忙,使用
std::vector
而不是数组。尤其是数组不支持在运行时设置大小。