问题是输出应显示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();
}
}
答案 0 :(得分:0)
在我看来,您的打印语句不在for循环中。如果您尝试在每次迭代时打印值,则需要具有以下内容:
for(int iter; iter<maxit; iter++){
/*** DO STUFF ***/
if(big <= e){
/*** PRINT STUFF ***/
}
}/* end of for iter<maxit */
如果您还没有使用Eclipse,Visual Studio甚至Emacs / Vi等IDE,我建议您开始使用。这些编辑经常会有突出显示/匹配的父母,因此您可以轻松捕捉到这些内容。