《测量实习计算程序》由会员分享,可在线阅读,更多相关《测量实习计算程序(8页珍藏版)》请在金锄头文库上搜索。
1、测量实习计算程序测量实习计算程序#include #include #include #include #include struct Qchar name5;/ 测点号float l;/ 中丝float dist;/ 视距int Cor;/ 观测角值int fixCor;/ 改正后角值float hCal;/ 计算值float il;/ i-lfloat h;/ 高差float D;/ 水平距离float H;/ 测点高程float referH;/ 参考数据(高程)P100;int FixCorner(int cor, int x)int outcor = 1;int fixcor3;in
2、t orgcor3;int inderr3;int temp;orgcor0 = cor % 100;orgcor1 = (cor - orgcor0) / 100) % 100;orgcor2 = (int)(cor / 10000);if (x = 0)inderr0 = x;inderr1 = 0;inderr2 = 90;elseinderr0 = 60 + x;inderr1 = 59;inderr2 = 89;if (inderr0+inderr1*100+inderr2*10000 = orgcor0)fixcor0 = inderr0 - orgcor0;elsefixcor0
3、 = inderr0 + 60 - orgcor0;if (inderr1 = 0)inderr1 = 59;inderr2 -= 1;elseinderr1 -= 1;if (inderr1 = orgcor1)fixcor1 = inderr1 - orgcor1;elsefixcor1 = inderr1 + 60 - orgcor1;inderr2 -= 1;fixcor2 = inderr2 - orgcor2;outcor *= (fixcor0 + fixcor1*100 + fixcor2*10000);return outcor;int main()int cpoint; /
4、 测点号int cnum;/ 测点数float i; / 仪器高int x;/ 指标差float hc;/ 测站高程int k = 0;FILE *fp;SYSTEMTIME st = 0;GetLocalTime(system(“color b0“);printf(“输入测站号:“);scanf(“%d“, printf(“输入测点数:“);scanf(“%d“, printf(“输入仪器高(dm):“);scanf(“%f“, printf(“输入指标差():“);scanf(“%d“, if (x 59)printf(“指标差过大!“);getch();exit(0);printf(“输
5、入测站高程(m):“);scanf(“%f“, for (int i=0; icnum; i+)sprintf(Pi.name, “C%d%02d“, cpoint, i+1);printf(“开始输入数据,输入 -1 -1 -1 修改上一组数据。n“);printf(“-n“);while (k cnum)printf(“输入 %s 中丝(dm)、视距(dm)和观测角:“, Pk.name);scanf(“%f%f%d“, if (Pk.l 0)k-;continue;Pk.fixCor = FixCorner(Pk.Cor, x);Pk.hCal = 5.0 * Pk.dist * sin
6、(2.0 / 180.0 * 3.1415926536 * (float)(int)(Pk.fixCor/10000) + (float)(int)(Pk.fixCor%10000)/100)/60.0 + (float)(Pk.fixCor%100)/3600.0);Pk.il = (i - Pk.l) / 10.0;Pk.h = Pk.hCal + Pk.il;Pk.D = 10.0 * Pk.dist * cos(3.1415926536 / 180.0 * (float)(int)(Pk.fixCor/10000) + (float)(int)(Pk.fixCor%10000)/100
7、)/60.0 + (float)(Pk.fixCor%100)/3600.0)* cos(3.1415926536 / 180.0 * (float)(int)(Pk.fixCor/10000) + (float)(int)(Pk.fixCor%10000)/100)/60.0 + (float)(Pk.fixCor%100)/3600.0);Pk.H = hc + Pk.h;Pk.referH = hc + Pk.il + 5.0 * Pk.dist * sin(2.0 / 180.0 * 3.1415926536 * (90.0 + x/3600.0 - (float)(int)(Pk.C
8、or/10000) - (float)(int)(Pk.Cor%10000)/100)/60.0 - (float)(Pk.fixCor%100)/3600.0);k+;fp = fopen(“out.txt“, “a+“);fprintf(fp, “测点t 改正后角值t 计算值(h)ti-lt 高差(h)t 水平距离(D)t 测点高程(H)t 参考高程n“);for (int i=0; icnum; i+)fprintf(fp, “%st%s%d%02d%02dt%.3ftt%.3ft%.3ftt%.3ftt%.3ftt%.3fn“, Pi.name, Pi.Cor/10000=90?“-“:“, (int)(Pi.fixCor/10000), abs(int)(Pi.fixCor%10000)/100), abs(Pi.fixCor%100), Pi.hCal, Pi.il, Pi.h, Pi.D, Pi.H, Pi.referH);fprintf(fp, “%d 月%d 日 %d:%d -endn“, st.wMonth,st.wDay,st.wHour,st.wMinute);fclose(fp);system(“notepad out.txt“);return 0;