我要用C/C++语言做SOR迭代法的程序,下面是我写的程序,麻烦看下哪里有错误,高手来!!!
#include<iostream>#include<cmath>usingnamespacestd;voidmain(){floatm,q,e,w,A[12][12],...
# include <iostream>
# include <cmath>
using namespace std;
void main(){
float m,q,e,w,A[12][12],x0[12],x1[2];
int i,j,n;
printf("请输入方程组的阶数(小于等于10)n:\n");
scanf("%d",&n);
printf("请输入松弛因子w:\n");
scanf("%d",&w);
for(i=1;i<=n;i++)
{
printf("请输入增广矩阵的第%d行:\n",i);
for(j=1;j<=n+1;j++)
scanf("%f",&A[i][j]);
x0[i]=0.0;
}
printf("请输入误差限e:\n");
scanf("%f",&e);
for(i=1;i<=n;i++)
{
m=0.0;
for(j=1;j<=i-1;j++)
m=m+A[i][j]*x1[j];
for(j=i;j<=n;j++)
m=m+A[i][j]*x0[j];
x1[i]=(A[i][n+1]-m)*w/A[i][i]+x0[i];
}
q=0.0;
for(i=1;i<=n;i++)
q=q+fabs(x0[i]-x1[i]);
while(q>e)
{
for(i=1;i<=n;i++)
x0[i]=x1[i];
for(i=1;i<=n;i++)
{
m=0.0;
for(j=1;j<=i-1;j++)
m=m+A[i][j]*x1[j];
for(j=i;j<=n;j++)
m=m+A[i][j]*x0[j];
x1[i]=(A[i][n+1]-m)*w/A[i][i]+x0[i];
}
q=0.0;
for(i=1;i<=n;i++)
q=q+fabs(x0[i]-x1[i]);
}
printf("线性方程组的解为:\n");
for(i=1;i<=n;i++)
printf("x[%d]=%f\n",i,x1[i]);
}
运行的时候,到输入误差限,键盘打不出字没有反应 展开
# include <cmath>
using namespace std;
void main(){
float m,q,e,w,A[12][12],x0[12],x1[2];
int i,j,n;
printf("请输入方程组的阶数(小于等于10)n:\n");
scanf("%d",&n);
printf("请输入松弛因子w:\n");
scanf("%d",&w);
for(i=1;i<=n;i++)
{
printf("请输入增广矩阵的第%d行:\n",i);
for(j=1;j<=n+1;j++)
scanf("%f",&A[i][j]);
x0[i]=0.0;
}
printf("请输入误差限e:\n");
scanf("%f",&e);
for(i=1;i<=n;i++)
{
m=0.0;
for(j=1;j<=i-1;j++)
m=m+A[i][j]*x1[j];
for(j=i;j<=n;j++)
m=m+A[i][j]*x0[j];
x1[i]=(A[i][n+1]-m)*w/A[i][i]+x0[i];
}
q=0.0;
for(i=1;i<=n;i++)
q=q+fabs(x0[i]-x1[i]);
while(q>e)
{
for(i=1;i<=n;i++)
x0[i]=x1[i];
for(i=1;i<=n;i++)
{
m=0.0;
for(j=1;j<=i-1;j++)
m=m+A[i][j]*x1[j];
for(j=i;j<=n;j++)
m=m+A[i][j]*x0[j];
x1[i]=(A[i][n+1]-m)*w/A[i][i]+x0[i];
}
q=0.0;
for(i=1;i<=n;i++)
q=q+fabs(x0[i]-x1[i]);
}
printf("线性方程组的解为:\n");
for(i=1;i<=n;i++)
printf("x[%d]=%f\n",i,x1[i]);
}
运行的时候,到输入误差限,键盘打不出字没有反应 展开
展开全部
1)首先,我在visual studio 2005 中运行上述程序,没有出现错误。
2)其次,看你错误的截图,好像是因为你编译程序的时候,sor.exe正在被使用(你是不是软件运行的窗口没有关闭,或者没有结束?)引起的。把所有的运行窗口关闭试一试,如果不行的话,重启一下编译软件。
2)其次,看你错误的截图,好像是因为你编译程序的时候,sor.exe正在被使用(你是不是软件运行的窗口没有关闭,或者没有结束?)引起的。把所有的运行窗口关闭试一试,如果不行的话,重启一下编译软件。
更多追问追答
追问
前面都没有问题,到输入误差限时按键盘没有反应
追答
你的全部测试数据给我发一下,我这边没有问题?
或者你输入“增广矩阵”数据的时候没输入一个数据按一次回车,然后直到输入完你想要的数据然后试一下。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询