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
而不是数组。尤其是数组不支持在运行时设置大小。