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

📄 6_9.cpp

📁 纯测边网的坐标计算.非常实用的大地测量程序。
💻 CPP
字号:
// 6_9.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include "110.h"
double x[100],y[100],s[100];
long kt[100],ja[100],jb[100],jc[100],ia[200],ib[200];
//初始化坐标,已知值kt[i]=1;未知值kt[i]=0
void InitCoordinate(long ne,long nzd)
{
	for(long i=1;i<=nzd;i++)
	{
		if(i<=ne) kt[i]=1;
		else
		{

			kt[i]=0;
			x[i]=0.0;
			y[i]=0.0;
		}
	}
}
//根据两点号得到边长
double GetSide(long ne,long ns,long iv,long iu)
{
	double dx,dy;
	if(iv<=ne&&iu<=ne)
	{
		dx=x[iu]-x[iv];
		dy=y[iu]-y[iv];
		return(DxDyToS(dx,dy));
	}
	for(long i=1;i<=ns;i++)
	{
		if(ia[i]==iv&&ib[i]==iu) return(s[i]);
		if(ia[i]==iu&&ib[i]==iv) return(s[i]);
	}
	return(0.0);
}
//纯边网根据三点编号自动计算坐标
BOOL CalculateCoordinate(long ne,long nw,long ns)
{
	for(long i=1;i<=nw;i++)
	{
		double s1=GetSide(ne,ns,jb[i],jc[i]);
		double s2=GetSide(ne,ns,ja[i],jc[i]);
		double s3=GetSide(ne,ns,ja[i],jb[i]);
		kt[jc[i]]=SideMeetCoordinate(s1,s2,s3,ja[i],jb[i],jc[i],x,y);
		if(kt[jc[i]]==0)
		{
			printf("Error is data");
			return FALSE;
		}
	}
	return TRUE;
}
//输出美化头说明
void WriteCoordinateHead(FILE *out)
{
	fprintf(out,"   num           x           y\n");
	fprintf(out,"-------------------------------------\n");
}
//输出坐标
void WriteCoordinate(FILE *out,long nzd,bool bGraph)
{
	for(long i=1;i<=nzd;i++)
	{
		if(bGraph)
			fprintf(out,"%14.4lf %14.4lf\n",x[i],y[i]);
		else
			fprintf(out,"%6d %14.4lf %14.4lf\n",i,x[i],y[i]);
	}
}
//输出坐标
void WriteCoordinate(long nzd)
{
	for(long i=1;i<=nzd;i++)
		printf("%4d %14.4lf %14.4lf\n",i,x[i],y[i]);
}
//输出绘图文件
void WriteGraphFile(FILE *out,long ne,long nw,long ns)
{
	fprintf(out,"图形\n");
	fprintf(out,"%6ld %6ld %6ld\n",ne,nw,ns);
	WriteCoordinate(out,ne+nw,TRUE);
	for(long k=1;k<=ns;k++)
	{
		fprintf(out,"%6ld %6ld\n",ia[k],ib[k]);
	}
}

int main(int argc, char* argv[])
{
	
	FILE *in,*out,*gra;
	char InFile[128]="\0";
	char OuFile[128]="\0";
	char GrFile[128]="\0";
	long ne,nw,ns,nzd,nn;
	for(;;)
	{
		printf("Input your InFileName:");
		scanf("%s",InFile);
		getchar();
		if((in=fopen(InFile,"r"))!=NULL)  break;
	}
	int Len=strlen(InFile);
	strncpy(OuFile,InFile,Len-4);//自动形成输出文件名
	strcat(OuFile,".out");
	if((out=fopen(OuFile,"w"))==NULL)
	{
		for(;;)
		{
			printf("Input your OutFileName:");
			scanf("%s",OuFile);
			getchar();
			if((out=fopen(OuFile,"w"))!=NULL) break;
		}
	}
	strncpy(GrFile,InFile,Len-4);//自动形成输出绘图文件名
	strcat(GrFile,".map");
	if((gra=fopen(GrFile,"w"))==NULL) 
	{
		for(;;)
		{
			printf("Input your GraphFileName:");
			scanf("%s",GrFile);
			getchar();
			if((gra=fopen(GrFile,"w"))!=NULL) break;
		}
	}
	fscanf(in,"%ld %ld %ld ",&ne,&nw,&ns);
	for(long i=1;i<=ne;i++)
		fscanf(in,"%lf %lf",&x[i],&y[i]);
	if(ns>0)
	{
		for(long i=1;i<=nw;i++)
			fscanf(in,"%ld %ld %ld",&ja[i],&jb[i],&jc[i]);
		for(i=1;i<=ns;i++)
			fscanf(in,"%ld %ld %lf",&ia[i],&ib[i],&s[i]);
	}
	nzd=ne+nw;
	nn=2*nw;
	InitCoordinate(ne,nzd);
	CalculateCoordinate(ne,nw,ns);
	WriteCoordinate(out,nzd,FALSE);
	WriteGraphFile(gra,ne,nw,ns);
	WriteCoordinate(nzd);
	fclose(in);
	fclose(out);
	fclose(gra);
     
	return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -