更新 for 循环中的变量

Updating variables in a for loop

本文关键字:变量 循环 for 更新      更新时间:2023-10-16

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

#include <iostream>
#include <cmath>
using namespace std;
int main()
{
int n, i, j, k;
float mult;
cout << "Enter the number of equationsn";
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];
}

我看到你的代码有几个问题:

VLA1不是标准 C++

在标准 c++ 中,int a[n][n], x[n], b[n];无效,因为n在编译时不是常量。即使某些编译器允许这样做,也不要使用它。改用 std::vector。

最后一行代码不是任何循环的一部分

您应该使用 IDE 或简单的编辑器来为您修复意图,然后您会发现,最后一行x[i] = a[i][n] / a[i][i];不是任何循环的一部分。我的提示:for后总是使用参数!

最后一个循环的条件错误

最后一个循环for(i = n-2; i=0; i--)的条件为i=0。这将值 0 will_assign_i然后评估i作为条件,由于i为零,它将退出循环。可能您打算使用==比较值。

嵌套循环for (j=n-1; j = i+1; j--)也是如此。阿拉伯数字

<小时 /> 1可变长度数组
2实际上,这个循环将永远运行在任何n != 0