附和导线平差程序[QBASIC]_导线平差程序
附和导线平差程序[QBASIC]由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“导线平差程序”。
附和导线平差程序[QBASIC]
由本人在网络上收集整理
DECLARE FUNCTION DEG!(X!)
DECLARE FUNCTION DMS!(XX!)
DECLARE FUNCTION XCHAR$(XX!, N!)
CLS
PRINT “ 附和导线平差程序(2.0R)”
PRINT “ 作者:徐振刚”
PRINT “ 1999年12月31日”
PRINT “功能:本程序可以用来进行一般导线平差计算,包括附和导线、闭合导线和支导线,其中” PRINT “ 闭合导线和支导线需对原始数据进行一定处理。”
PRINT “备注:坐标计算误差≤5mm;角度计算误差≤0.5s”
REM 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$
DO
YN$ = INKEY$
IF YN$ = “Y” OR TN$ = “y” THEN
RUN “DXPCEDIT.BAS”
ELSEIF YN$ = “N” OR YN$ = “n” THEN
EXIT DO
ELSEIF YN$=CHR$(27)THEN
RUN “MAIN.BAS”
END IF
LOOP
REM ******************************************************************************** CLS
PI = 3.14***93#: PU = 180 / PI
INPUT “请输入数据文件名:(DXPC.DAT)”;FILEIN$
IF FILEIN$ = “” THEN
FILEIN$ = “DXPC.DAT”
END IF
OPEN FILEIN$ FOR INPUT AS #1
INPUT #1, N, M, H
DIM B(N), D(M), A(N1
A(I)= A(I360
END IF
NEXT I
F0 = H / 3600 * SQR(N1)1)
FOR I = 1 TO N360
END IF
NEXT I
S = 0: X(0)= X1: Y(0)= Y1
FOR I = 1 TO M
S = S + D(I)
X(I)= X(I1)+ D(I)* SIN(A(I)/ PU)
NEXT I
F3 = X(M)Y: F = ABS(SQR(F3 * F3 + F4 * F4))
D = 0
FOR I = 1 TO M
D = D + D(I)
X(I)= X(I)F4 / S * D
NEXT I
REM ********************************************************************************
PRINT “方位角允许闭合差 F0=+/-”;XCHAR$(DMS(F0), 6)
IF ABS(F1)
PRINT “导线方位角闭合差 F1= ”;XCHAR$(DMS(F1), 6);“ OK!”
ELSE
PRINT “导线方位角闭合差 F1= ”;XCHAR$(DMS(F1), 6);“ OVER LIMIT!”
END IF
PRINT “相对闭合差:”
PRINT TAB(5);“F3=”;F3, “F4=”;F4, “F=”;F, “K=1/”;S / F
PRINT “改正后方位角:”
FOR I = 0 TO N1
PRINT #1, TAB(5);“A(”;I;“)=”;XCHAR$(DMS(A(I)), 6)
NEXT I
PRINT #1, “改正后坐标:”
FOR I = 0 TO M
PRINT #1, TAB(5);“X(”;I;“)=”;XCHAR$(X(I), 4), TAB(30);“Y(”;I;“)=”;XCHAR$(Y(I), 4)NEXT I
PRINT #1, TAB(5);“X(”;M;“)=”;XCHAR$(X(M), 4), TAB(30);“Y(”;M;“)=”;XCHAR$(Y(M), 4)CLOSE #1
REM ******************************************************************************** PRINT
PRINT “详细数据资料业已备份到 JHFY.OUT。”
PRINT “按 ESC键 返回主菜单...” DO
LOOP UNTIL INKEY$ = CHR$(27)RUN “MAIN.BAS”
END
REM 将度分秒转换成度
FUNCTION DEG(X)
D = INT(X)
M = INT((XDD)* 60)
S =(XM / 60)* 3600
IF XX >= 0 THEN
DMS = D + M / 100 + S / 10000
ELSE
DMS =-1 *(D + M / 100 + S / 10000)END IF
END FUNCTION
REM 以字符串形式输出保留 N 位小数的 X FUNCTION XCHAR$(XX, N)
X = ABS(XX)
R = INT(X)
F = INT((X-R)* 10 ^ N +.5)
TEMP$ = MID$(STR$(F), 2)
WHILE LEN(TEMP$)
TEMP$ = “0” + TEMP$
WEND
TEMP$ = STR$(R)+ “.” + TEMP$
IF XX >= 0 THEN
XCHAR$ = TEMP$
ELSE
XCHAR$ = “-” + MID$(TEMP$, 2)
END IF
END FUNCTION