附和导线平差程序.doc_第1页
附和导线平差程序.doc_第2页
附和导线平差程序.doc_第3页
附和导线平差程序.doc_第4页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

附和导线平差程序QBASIC由本人在网络上收集整理 DECLARE FUNCTION DEG! (X!)DECLARE FUNCTION DMS! (XX!)DECLARE FUNCTION XCHAR$ (XX!, N!)CLSPRINTPRINT 附和导线平差程序(2.0R)PRINT 作者:徐振刚PRINT 1999年12月31日PRINT 功能:本程序可以用来进行一般导线平差计算,包括附和导线、闭合导线和支导线,其中PRINT 闭合导线和支导线需对原始数据进行一定处理。PRINT 备注:坐标计算误差5mm;角度计算误差0.5sPRINTREM N -角度个数(包括已知方位角)REM M -导线边数REM H -允许方位角闭合差秒值REM A -方位角(A(0)为起始方位角)REM D -边长REM X,Y -坐标(X1,Y1;X,Y为已知坐标)REM F0 -方位角允许闭合差REM F1 -导线方位角闭合差REM F3,F4,F-增量闭合差REM K -导线全长相对闭合差PRINT 新建数据文件?(Y/N)LOCATE 25: PRINT 按 ESC键 返回主菜单.; TAB(60); DATE$; ; TIME$DOYN$ = INKEY$IF YN$ = Y OR TN$ = y THENRUN DXPCEDIT.BASELSEIF YN$ = N OR YN$ = n THENEXIT DOELSEIF YN$=CHR$(27) THENRUN MAIN.BASEND IFLOOPREM *CLSPI = 3.141592653589793#: PU = 180 / PIINPUT 请输入数据文件名:(DXPC.DAT); FILEIN$IF FILEIN$ = THENFILEIN$ = DXPC.DATEND IFOPEN FILEIN$ FOR INPUT AS #1INPUT #1, N, M, HDIM B(N), D(M), A(N - 1), X(M), Y(M)INPUT #1, X1, Y1, X, YFOR I = 0 TO NINPUT #1, B(I)B(I) = DEG(B(I)NEXT IFOR I = 1 TO MINPUT #1, D(I)NEXT ICLOSE #1REM *A(0) = B(0)FOR I = 1 TO N - 1A(I) = A(I - 1) + B(I) + 180IF A(I) 360 THENA(I) = A(I) - 360END IFNEXT IF0 = H / 3600 * SQR(N - 1): F1 = A(N - 1) - B(N)V = -1 * F1 / (N - 1)FOR I = 1 TO N - 1A(I) = A(I) + V * IIF A(I) 360 THENA(I) = A(I) - 360END IFNEXT IS = 0: X(0) = X1: Y(0) = Y1FOR I = 1 TO MS = S + D(I)X(I) = X(I - 1) + D(I) * COS(A(I) / PU)Y(I) = Y(I - 1) + D(I) * SIN(A(I) / PU)NEXT IF3 = X(M) - X: F4 = Y(M) - Y: F = ABS(SQR(F3 * F3 + F4 * F4)D = 0FOR I = 1 TO MD = D + D(I)X(I) = X(I) - F3 / S * DY(I) = Y(I) - F4 / S * DNEXT IREM *PRINT 方位角允许闭合差 F0=+/-; XCHAR$(DMS(F0), 6)IF ABS(F1) = F0 THENPRINT 导线方位角闭合差 F1= ; XCHAR$(DMS(F1), 6); OK!ELSEPRINT 导线方位角闭合差 F1= ; XCHAR$(DMS(F1), 6); OVER LIMIT!END IFPRINT 相对闭合差:PRINT TAB(5); F3=; F3, F4=; F4, F=; F, K=1/; S / FPRINT 改正后方位角:FOR I = 0 TO N - 1PRINT TAB(5); A(; I; )=; XCHAR$(DMS(A(I), 6)NEXT IPRINT 改正后坐标:FOR I = 0 TO MPRINT TAB(5); X(; I; )=; XCHAR$(X(I), 4), TAB(30); Y(; I; )=; XCHAR$(Y(I), 4)NEXT IPRINT TAB(5); X(; M; )=; XCHAR$(X(M), 4), TAB(30); Y(; M; )=; XCHAR$(Y(M), 4)OPEN DXPC.OUT FOR OUTPUT AS #1PRINT #1, 导线平差PRINT #1, TAB(25); DATE$, TIME$PRINT #1,PRINT #1, 方位角允许闭合差 F0=+/-; XCHAR$(DMS(F0), 6)IF ABS(F1) = F0 THENPRINT #1, 导线方位角闭合差 F1= ; XCHAR$(DMS(F1), 6); OK!ELSEPRINT #1, 导线方位角闭合差 F1= ; XCHAR$(DMS(F1), 6); OVER LIMIT!END IFPRINT #1, 相对闭合差:PRINT #1, TAB(5); F3=; F3, F4=; F4, F=; F, K=1/; S / FPRINT #1, 改正后方位角:FOR I = 0 TO N - 1PRINT #1, TAB(5); A(; I; )=; XCHAR$(DMS(A(I), 6)NEXT IPRINT #1, 改正后坐标:FOR I = 0 TO MPRINT #1, TAB(5); X(; I; )=; XCHAR$(X(I), 4), TAB(30); Y(; I; )=; XCHAR$(Y(I), 4)NEXT IPRINT #1, TAB(5); X(; M; )=; XCHAR$(X(M), 4), TAB(30); Y(; M; )=; XCHAR$(Y(M), 4)CLOSE #1REM *PRINTPRINT 详细数据资料业已备份到 JHFY.OUT。PRINTPRINT 按 ESC键 返回主菜单.DOLOOP UNTIL INKEY$ = CHR$(27)RUN MAIN.BASENDREM 将度分秒转换成度FUNCTION DEG (X)D = INT(X)M = INT(X - D) * 100)S = INT(X - D - M / 100) * 1000000) / 100DEG = D + M / 60 + S / 3600END FUNCTIONREM 将度转换成度分秒FUNCTION DMS (XX)IF XX = 0 THENDMS = D + M / 100 + S / 10000ELSEDMS = -1 * (D + M / 100 + S / 10000)END IFEND FUNCTIONREM 以字符串形式输出保留 N 位小数的 XFUNCTION XCHAR$ (XX, N

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论