我有一个非常奇怪的算法,为了清楚起见,下面是代码
#include <iostream>
using namespace std;
#define maxn 1000
#define n 3
double sum=0;
double sum1=0;
double a[maxn][maxn];
double l[maxn][maxn];
double u[maxn][maxn];
void read(){
for(int i=1;i=n;i++){
for(int j=1;j<=n;j++){
cin>>a[i][j];
}
}
}
void decomposition(){
for(int i=1;i<=n;i++)
l[i][1]=a[i][1];
for(int j=1;j<=n;j++)
u[1][j]=a[1][j]/l[1][1];
for(int j=2;j<=n;j++){
for(int i=j;i<=n;i++){
for(int k=1;k<j;k++){
sum+=l[i][k]*u[k][j];
}
l[i][j]=a[i][j]-sum;
}
u[j][j]=1;
for(int i=j+1;i<=n;i++){
for(int k=1;k<j;k++){
sum1+=l[j][k]*u[k][i];
}
u[j][i]=(a[j][i]-sum1)/l[j][j];
}
}
}
void print(){
cout<<" L matrix "<<endl;
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
cout<<l[i][j]<<" ";
}
cout<<endl;
}
cout<<endl;
cout<<" U matrix "<<endl;
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
cout<<u[i][j]<<" ";
}
cout<<endl;
}
}
int main(){
cout<<"enter the matrix "<<endl;
read();
cout<<endl;
decomposition();
cout<<"print twwo matrix "<<endl;
print();
return 0;
}但是当我输入矩阵时,例如,我想分解这个矩阵
3 -1 2
1 2 3
2 -2 -1程序不显示输出,只是要求再次输入一些输入,我看不到在我的代码这里需要输入更多的矩阵或数据,那么有什么问题呢?
发布于 2011-11-13 22:28:54
不确定这是否是问题所在,但在read (这不是一个函数的好名字,顺便说一句)中,您有:
for(int i=1;i=n;i++){这会将i指定为n,并且应该为i==n或更有可能是i<=n,这也总是正确的,因此执行永远不会停止。
发布于 2011-11-13 22:35:54
试试这个:
void read(){
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
cin>>a[i][j];
}
}
}它应该正确地读取用户矩阵。
https://stackoverflow.com/questions/8112146
复制相似问题