📄 subject2.cpp
字号:
#include <stdio.h>
#include <math.h>
void main()
{ int i=0,j=0,n=10,I,J,k,row,colum;
float array[10][10],b[10],max;
char c;
double t=0,x[10];
FILE *fp1,*fp2;
fp1=fopen("source","w+");
fprintf(fp1,"4 2 -3 -1 2 1 0 0 0 0 5\n");
fprintf(fp1,"8 6 -5 -3 6 5 0 1 0 0 12\n");
fprintf(fp1,"4 2 -2 -1 3 2 -1 0 3 1 3\n");
fprintf(fp1,"0 -2 1 5 -1 3 -1 1 9 4 2\n");
fprintf(fp1,"-4 2 6 -1 6 7 -3 3 2 3 3\n");
fprintf(fp1,"8 6 -8 5 7 17 2 6 -3 5 46\n");
fprintf(fp1,"0 2 -1 3 -4 2 5 3 0 1 13\n");
fprintf(fp1,"16 10 -11 -9 17 34 2 -1 2 2 38\n");
fprintf(fp1,"4 6 2 -7 13 9 2 0 12 4 19\n");
fprintf(fp1,"0 0 -1 8 -3 -24 -8 6 3 -1 -21\n");
fclose(fp1);
fp1=fopen("source","r");
for(i=0;i<n;i++)
{ for(j=0;j<n;j++) fscanf(fp1,"%f",&array[i][j]);
fscanf(fp1,"%f",&b[i]); }
fclose(fp1);
fp2=fopen("resout","w+");
fprintf(fp2,"A====================================A\n");
for(i=0;i<n;i++)
{ for(j=0;j<n;j++)
fprintf(fp2,"%6.f\t",array[i][j]);
fprintf(fp2,"%10.f\t",b[i]);
fprintf(fp2,"\n"); }
fprintf(fp2,"A===========A===========A============A\n");
fclose(fp2);
printf("Please input y to choose the deleting way of GUASS IN ORDER.\n");
printf("Otherwise,to choose the deleting way of GUASS MAIN LIST PRIMARY.\n");
printf("input:");
scanf("%c",&c);
if(c=='y')
{
for(k=0;k<n-1;k++)
for(i=k+1;i<n;i++)
{ t=array[i][k]/array[k][k];
for(j=0;j<n;j++)
array[i][j]=array[i][j]-array[k][j]*t;
b[i]=b[i]-t*b[k]; }
} else
for(k=0;k<n-1;k++)
{
max=fabs(array[k][k]);
for(j=k;j<n-1;j++)
if(max<fabs(array[j+1][k])) { max=fabs(array[j+1][k]);row=j+1;}
else continue;
colum=k;
printf("%f\t",max);
if(max==0) {printf("No unique solustion!\n"); break; }
printf("(%d\t%d\t%d)\n",row,colum,k);
I=row;J=colum;
if(I!=k) { for(J=k;J<n;J++)
{ t=array[k][J];array[k][J]=array[I][J];array[I][J]=t;}
t=b[k];b[k]=b[I];b[I]=t;
}
fp2=fopen("resout","a");
fprintf(fp2,"********************************************************\n");
for(i=0;i<n;i++)
{ for(j=0;j<n;j++)
fprintf(fp2,"%6.f\t",array[i][j]);
fprintf(fp2,"%10.f\t",b[i]);
fprintf(fp2,"\n"); }
fprintf(fp2,"********************************************************\n");
fclose(fp2);
for(I=k+1;I<n;I++)
{ t=array[I][k]/array[k][k];
for(J=k;J<n;J++)
array[I][J]=array[I][J]-array[k][J]*t;
b[I]=b[I]-t*b[k]; }
fp2=fopen("resout","a");
fprintf(fp2,"*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*\n");
for(i=0;i<n;i++)
{ for(j=0;j<n;j++)
fprintf(fp2,"%6.f\t",array[i][j]);
fprintf(fp2,"%10.f\t",b[i]);
fprintf(fp2,"\n"); }
fprintf(fp2,"*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*\n");
fclose(fp2);
}
if(array[n-1][n-1]==0) printf("no unique solustion!\n");
fp2=fopen("resout","a");
fprintf(fp2,"GAUSS===========GAUSS===========GAUSS============GAUSS\n");
for(i=0;i<n;i++)
{ for(j=0;j<n;j++)
fprintf(fp2,"%6.f\t",array[i][j]);
fprintf(fp2,"%10.f\t",b[i]);
fprintf(fp2,"\n"); }
fprintf(fp2,"GAUSS===========OK===========OK============GAUSS\n");
fclose(fp2);
x[n-1]=b[n-1]/array[n-1][n-1];
printf("x10=%.8f\n",x[n-1]);
for(i=n-2;i>=0;i--)
{ t=0;
for(j=i+1;j<n;j++) t=t+array[i][j]*x[j];
x[i]=(b[i]-t)/array[i][i];
}
fp2=fopen("resout","a");
for(i=1;i<=n;i++)
fprintf(fp2,"x%-3d=%15.10f\n",i,x[i-1]);
fprintf(fp2,"\n\n");
fprintf(fp2,"END===========OK===========OK============END\n");
fclose(fp2);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -