gpt4 book ai didi

c++ - 在 for 循环中更新变量

转载 作者:行者123 更新时间:2023-11-28 04:08:24 34 4
gpt4 key购买 nike

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

#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];
}

最佳答案

我发现你的代码有几个问题:

VLAs1 不是标准的 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 分配给 i,然后将 i 评估为条件,并且由于 i 为零,它将退出循环。可能您打算使用 ==比较这些值。

嵌套循环 for (j=n-1; j = i+1; j--).2

也是如此


1可变长度数组
2 实际上,对于任何 n != 0

,此循环将永远运行

关于c++ - 在 for 循环中更新变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58298501/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com