【发布时间】:2012-03-20 02:19:53
【问题描述】:
问题是输出应该显示x、y 和z 从第一次迭代到最后一次迭代的值,其中big 小于或等于e。但问题是它只显示最后一次迭代。如何输出其他迭代?
这是我的代码:
#include<stdio.h>
#include<conio.h>
#include<math.h>
#include<stdlib.h>
void main()
{
float a[50][50],x[50],e=0.0010,big,temp,relerror,sum;
int n=3,i,j,maxit=50,itr;
char ch;
clrscr();
for(i=1;i<=n;i++)
{
clrscr();
printf("\n\t\t\t ----EQUATION %d-----",i);
printf("\n\tEnter your desired numerical coefficients for x, y and z\n\t\t\tthen the constant's value.\n\t (Press enter each time you are done on your input.)\n");
for(j=1;j<=n+1;j++)
scanf("%f",&a[i][j]);
}
clrscr();
for(i=1;i<=n;i++)
x[i]=0;
for(itr=1;itr<=maxit;itr++)
{
big=0;
for(i=1;i<=n;i++)
{
sum=0;
for(j=1;j<=n;j++)
{
if(i!=j)
sum=sum+a[i][j]*x[j];
}
temp=(a[i][n+1]-sum)/a[i][i];
relerror=fabs((x[i]-temp)/temp);
if(relerror>big)
big=relerror;
x[i]=temp;
}
if(big<=e)
{
printf("\t k\t x\t y\t z\t xe\t ye\t et\n");
printf("\t %d",itr);
for(i=1;i<=n;i++)
printf("\t %.4f",x[i]);
printf(" %.4f",sum);
printf(" %.4f",big);
while(itr>1)
{
itr=--itr;
printf("\n\t %d",itr);}
getch();
exit(1);
}
}
printf("Does not converge in %d iteration \n",maxit);
getch();
}
}
【问题讨论】:
-
您在调试器中查看过 x 的内容吗?它包含多少项?
-
我认为问题出在最后一个 FOR LOOP。但我不知道如何解决它。对不起,我只是编程的初学者。:(
-
@BossJeric:请将您的问题标记为 C 或 C++,而不是两者。 (see the tag wiki for details)