找回密码
 立即注册
搜索
热搜: rtk 全站仪 航测
查看: 634|回复: 0

程序高手帮忙指点下

[复制链接]

主题

0

回帖

2

积分

新手上路

积分
2
发表于 2007-3-2 03:32:22 | 显示全部楼层 |阅读模式
下面这个程序是我的论坛上看到的,现在找不到了,现在请教高手帮忙看下.里面说有有自动判别所求桩号在哪一段竖曲线要素上.但是我看了很久还是没看出来,运行也只能在第一段曲线上运行,其他段上都是结束,我怀疑是不是这个程序没发全,或者我输入的有错误,谢谢各位指点&nbsp;<br>&nbsp;方便的CASIO fx-4800P计算器竖曲线高程计算程序(改进版)<br>&nbsp;一、程序编制思路<br>1、如果把数据文件嵌入到程序中,则平时计算时只需要输入所要求的路线名参数M和所求点的桩号Z就可以直接计算,本程序实现了这个功能,非常方便。<br>2、加入边桩高程的计算功能。<br>3、对所求点桩号Z是否在本条路线范围内进行有效性检查,计算比较安全。<br>4、本程序不适合手工输入各种数据来计算高程。(手工输入各种数据来计算高程的程序见附件)二、源程序1、主程序(GCJS-A)E=0:N=1:M:M=1=&gt;Prog “SJ01.D”⊿M=2=&gt;Prog “SJ02.D”⊿M=3=&gt;Prog “SJ03.D”⊿“END”<br>说明:① E:程序是否结束的参数;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; N:原始数据文件中的行号参数;M:选择要计算那条路线的参数;② 程序根据M的值调用相应的原始数据文件;本例中当M不等于1、2、3时直接结束本程序。③ 如果有5个原始数据文件,那么主程序中就需要加入M=4=&gt;Prog “SJ04.D”⊿M=5=&gt;Prog “SJ05.D”⊿语句,以此类推。<br>2、子程序:原始数据文件(SJ01.D)A=2225:C=1944.08:B=2541.821:G=1958.971:Y=2225:D=5270:Prog “XL.S”↙Lbl 0:N=1=&gt;Goto 1⊿N=2=&gt;Goto 2⊿N=3=&gt;Goto 3⊿N=4=&gt;Goto 4⊿N=5=&gt;Goto 5⊿N=6=&gt;Goto 6⊿Goto 7↙Lbl 1:A=2924.821:C=1936.374:R=2200:Goto 9↙Lbl 2:A=3225:C=1930.37:R=3000:Goto 9↙Lbl 3:A=3550:C=1920.785:R=6000:Goto 9↙Lbl 4:A=4105:C=1924.695:R=4000:Goto 9↙Lbl 5:A=5070:C=1972.945:R=4000:Goto 9↙Lbl 6:A=5270:C=1965.945:R=4000:Goto 9↙Lbl 7:R=0:Goto 9↙Lbl 9:Prog “GC.S”:E≥0=&gt;Goto 0⊿<br>3、子程序:原始数据文件(SJ02.D)A=XX:C=XX:B=XX:G=XX:Y=XX:D=XX:Prog “XL.S”↙Lbl 0:N=1=&gt;Goto 1⊿N=2=&gt;Goto 2⊿N=3=&gt;Goto 3⊿Goto 4↙Lbl 1:A=XX:C=XX:R=XX:Goto 7↙Lbl 2:A=XX:C=XX:R=XX:Goto 7↙Lbl 3:A=XX:C=XX:R=XX:Goto 7↙Lbl 4:R=0:Goto 7↙Lbl 7:Prog “GC.S”:E≥0=&gt;Goto 0⊿(本例只列出样式)<br>4、子程序:原始数据文件(SJ03.D)内容略。原始数据文件格式说明:①&nbsp;&nbsp;&nbsp;&nbsp; A:在数据文件第一行中的A为整条路线第一条直线段的起点桩号,其余行中的A为每个变坡点之后&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 的直线段的终点桩号;C:在数据文件第一行中的C为整条路线第一条直线段起点桩号的高程,其余行中的C为每个变坡点之后的直线段终点桩号的高程;B:第一个变坡点的桩号;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; G:第一个变坡点的高程。Y:整条路线的计算范围起点桩号;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; D:整条路线的计算范围终点桩号;(Y、D的桩号一定要注意不要落在任何竖曲线范围内,以免发生错误。)R:竖曲线半径。② 根据竖曲线个数的不同,Lbl 0行中的内容做对应修改,可参照对比SJ01.D和SJ02.D。③ 程序根据行号N值读取相对应行的竖曲线要素数据。④ 每个数据文件中必须有如同SJ01.D中Lab 7的一行,作为最后一个数据行。⑤ 特别注意:数据文件中每一行中的R是当前计算竖曲线的半径,但同一行中的A、C并不是当前计算竖曲线变坡点的数据,而是变坡点之后直线段终点的桩号和高程。SJ01.D中Lbl 1至Lbl 5中的A、C也是下一个变坡点的桩号和高程,但Lbl 6中的A、C却不是下一个变坡点的桩号和高程。5、子程序(GC.S)R=0=&gt;U=B-Z:H=G-JU:Goto 1⊿J=(C-G)÷(A-B):W=J-I:T=RAbsW÷2:P=B-T:Q=B+T:W&gt;0=&gt;F=1:≠&gt;F=-1⊿↙Lbl 0:Z:Z&lt;0=&gt;E=-9:Goto 3⊿Z&lt;Y=&gt;E=-9:Goto 3⊿Z&gt;D=&gt;E=-9:Goto 3⊿Z&gt;Q=&gt;N=N+1:B=A:G=C:I=J:Goto 3⊿U=B-Z:Z≤P=&gt;H=G-IU:≠&gt;Z≤B=&gt;H=G-IU+F(Z-P)<sup>2</sup>÷2R:≠&gt;Z&lt;Q=&gt;H=G-JU+F(Q-Z)<sup>2</sup>÷2R:≠&gt;H=G-JU⊿⊿⊿↙Lbl 1: H“H=”<sub>▲</sub>Lbl 2:{S}:S≠0=&gt;{K}:K=K÷100:X=H+KS:X“BH=”<sub>▲</sub>Goto 2:≠&gt;E=-9⊿↙Lbl 3: end 说明:① Z:所求点的桩号;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; H:所求点的高程;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; J:变坡点之后的坡度值;&nbsp;&nbsp; S:所求点的边桩距离,在中桩左侧时输入负值,在中桩右侧时输入正值;&nbsp;&nbsp; K:边桩至中桩的横坡度,面向路线前进方向,中桩两侧均按照从左到右的顺序,上坡时坡度为正值,下坡时坡度为负值。例如路拱为路线中心线,横坡为2.67%,则边桩时在中桩左侧时K输入2.67,在中桩右侧时K值输入-2.67。&nbsp;&nbsp; X: 所求点的边桩的计算高程,屏幕显示为“BH=xxxxx”。② W&gt;0为凹曲线,W&lt;0为凸曲线。③ 当Z值小于0时或当Z值超出整条路线的计算范围桩号Y、D时结束整个程序。当Z值大于本计算段竖曲线的终点桩号Q时,行号指向原始数据文件中下一个竖曲线要素数据行,再调用“GC.S”子程序进行计算,依次类推;计算高程时本子程序自动判别所求点桩号是在直线上还是在竖曲线上。④ 在Lbl 3行中,循环输入边桩距离S和边桩横坡K,则循环计算所求点桩号Z的边桩的高程;当边桩距离S值等于0时,结束边桩高程的计算,本子程序也结束。⑤ 本子程序开始R=0至Goto 1⊿这几个语句是为了计算最后一个竖曲线之后的直线段上桩号的高程。6、子程序(XL.S)I=(G-C)÷(B-A)说明:计算斜率。<br>&nbsp;
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|测量空间论坛 ( 闽ICP备19019609号-1 )

GMT+8, 2026-7-5 00:14 , Processed in 0.092954 second(s), 20 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表