1、条件平差程序#include #include #include #define N_max 15int n,m,r,p; /n:观测值的个数,m:待定点个数,r:多余观测值个数,p:已知高程的水准点个数float Hd6=0;void Choose() int i;printf(“此程序能够解决闭合水准路线、附和水准路线 、支水准路线的条件平差。n“);printf(“请问已知高程的水准点个数为:(不要太多喔, 。):“);scanf(“%d“,for(i=1;i fabs(awoi)wo=j;if(wo!=i)for(k=i;k=1;i-)for(j=i+1;j=r;j+)air+1-=a
2、ij*k123j;k123i=air+1/aii;void Solution(float Naa10,float W,float k,int AN_max,float QN_max,float v) int i;if(r=1)k1=(-1)*W1/Naa11;Realv(A,Q,k,v);elsefor(i=1;i=r;i+)Naair+1=(-1)*Wi;getresult( Naa, k);Realv(A,Q,k,v);void Answer(float Hgao3,float v,float W,float Point,int flag) /输出答案int i,j,k,AsdN_max6
3、=0;int a12310N_max=0;char cheN_max50;printf(“改正数方程的解为:n“);for(i=1;i=n;i+)printf(“ v%d “,i);putchar(n);for(i=1;i=n;i+)printf(“%f “,vi);putchar(n);printf(“平差后各高差值:n“);for(i=1;i=n;i+)printf(“ h%d “,i);putchar(n);for(i=1;i=n;i+)printf(“%f “,Hgaoi1+vi);putchar(n);Equation( a123, che, Asd, Hgao, W, flag);
4、printf(“n平差后各待定点的高程如下:n 待定点t “);for(i=1;i=m;i+)printf(“%dt “,i);printf(“n “);for(i=1;i=m;i+)for(j=1;j=n;j+)if(a123ij!=0)Pointi+=(Hgaoj1+vj)*a123ij;for(k=1;k=p;k+)Pointi+=Asdik*Hdk;printf(“%ft “,Pointi);void main()int t,flag=1;float k10,vN_max=0,PointN_max=0;int A10N_max=0,asdN_max6=0;float HgaoN_max
5、3,W10=0;float QN_maxN_max=0,Naa1010=0;char EquaN_max50;printf(“tt“);putchar(16);putchar(16);printf(“ 欢迎使用 “);putchar(17);putchar(17);putchar(n);Choose();printf(“请输入观测值个数 n:“);scanf(“%d“,printf(“请输入必要观测值个数 t:“);scanf(“%d“,r=n-t;printf(“请输入待定点的个数 m:“);scanf(“%d“,Input(Hgao);InitialQ(Q,Hgao);Equation( A, Equa, asd, Hgao, W, flag);flag=0;Calculate(Q,Hgao,Naa,A);Solution( Naa, W, k, A, Q, v);Answer( Hgao, v, W, Point, flag);printf(“nn程序已结束。 。 。 . “);getch();