⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 od.c

📁 交通工程方面的交通规划程序,解决了任意矩阵下的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 + -