📄 od.c
字号:
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
FILE *fp,*of;
char filename[20],outname[20],e;
int n,c,x,i,j,r,r1,iCount;
float s,*a,*O,*D,*ON,*DN,*FO,*FD,*p,*k,*g;
void main()
{
void savefile();
void diedai();
void bug();
clrscr();
printf("\nPlease input the OD pofloat amount : ");
scanf("%d",&n);
a=(float*)calloc(n*n,sizeof(float));
O=(float*)calloc(n,sizeof(float));
D=(float*)calloc(n,sizeof(float));
ON=(float*)calloc(n,sizeof(float));
DN=(float*)calloc(n,sizeof(float));
FO=(float*)calloc(n,sizeof(float));
FD=(float*)calloc(n,sizeof(float));
printf("\nPlease open the od file : ");
scanf("%s",filename);
if((fp=fopen(filename,"r"))==NULL)
{printf("cannot open\n");
exit(0);}
p=a;
for(i=0;i<n*n;i++,p++)
fscanf(fp,"%f",&*p);
p=O;
for(i=0;i<n;i++,p++)
fscanf(fp,"%f",&*p);
p=D;
for(i=0;i<n;i++,p++)
fscanf(fp,"%f",&*p);
fclose(fp);
bug();
diedai();
for(i=0;;i++)
{ if((r+r1)!=0)
diedai();
else
break;
}
printf("\n\nThe OD zzxs result is:\n\n");
for(i=0,p=a,iCount=1;i<n*n;i++,iCount++,p++)
{
printf("%10.3f ",*p);
if(iCount%n==0)printf("\n");
}
printf("\nDo you want to save it ? (y/n) ");
scanf(" %s",&e);
if(e=='y')
savefile();
free(a);
free(O);
free(D);
free(ON);
free(DN);
free(FO);
free(FD);
}
void savefile()
{
printf("\n\nPlease input the name of file : ");
scanf("%s",&outname);
if((of=fopen(outname,"w"))==NULL)
{printf("cannot open\n");
exit(0);}
fprintf(of,"The OD zzxs result is:\n\n");
for(i=0,p=a,iCount=1;i<n*n;i++,p++,iCount++)
{
fprintf(of,"%10.3f ",*p);
if(iCount%n==0)fprintf(of,"\n");
}
fclose(of);
printf("\n\nOK! The file has saved.");
}
void diedai()
{
p=a,k=FO,g=FD;
for(i=0;i<n;i++,k++)
{
for(j=0,g=FD;j<n;j++)
{(*p)=(*p)*((*k)+(*g))/2;
p++;
g++;
}
}
k=a,p=ON;
for(i=0;i<n;i++,p++)
{
for(j=0,s=0;j<n;j++)
{
(*p)=s=s+(*k);
k++;}
}
k=a,p=DN;
for(i=0;i<n;i++,p++)
{
for(j=0,s=0;j<n;j++)
{
(*p)=s=s+(*k);
for(c=0;c<n;c++)
{
k++;
}
}
k=a;
for(x=0;x<i+1;x++)
{k++;}
}
p=FO,k=O,g=ON;
for(i=0;i<n;i++,p++,k++,g++)
*p=(*k)/(*g);
p=FD,k=D,g=DN;
for(i=0;i<n;i++,p++,k++,g++)
*p=(*k)/(*g);
p=FO;
for(i=0,r=0;i<n;i++,p++)
{if(fabs(*p-1)>0.03)
r=r+1;
}
p=FD;
for(i=0,r1=0;i<n;i++,p++)
{if(fabs(*p-1)>0.03)
r1=r1+1;
}
}
void bug()
{
k=a,p=ON;
for(i=0;i<n;i++,p++)
{
for(j=0,s=0;j<n;j++,k++)
(*p)=s=s+(*k);
}
k=a,p=DN;
for(i=0;i<n;i++,p++)
{
for(j=0,s=0;j<n;j++)
{
(*p)=s=s+(*k);
for(c=0;c<n;c++)
{
k++;
}
}
k=a;
for(x=0;x<i+1;x++)
{k++;}
}
p=FO,k=O,g=ON;
for(i=0;i<n;i++,p++,k++,g++)
*p=(*k)/(*g);
p=FD,k=D,g=DN;
for(i=0;i<n;i++,p++,k++,g++)
*p=(*k)/(*g);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -