说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

简单计算函数的编写过程-VB资料

HTML文档下载 WORD文档下载 PDF文档下载
简单计算函数的编写过程-VB资料
作者:胡晓磊

  计算主程序负责初始算式整理、算式中变量的赋值、脱括号及脱括号后的算式整理、调用简单计算函数、输出计算结果。

  思路:如果第一个运算符是乘除,则计算它前后的两个数,其值作为新算式的第一个数,再继续计算这个新算式;如果是加减则用第
一个数加减后面的算式(如果是减,还要将其后的+变为-,-变为+)。

  这是一个递归的思路,据此得到以下算法:
A: 函数入口,需要两个参数,分别表示该算式在大算式中的起止位  置。
B: 如果算式中只有一个元素,则函数值等于该元素,L;否则C
C: 如果算式中有三个元素,即“数符数”的形式,则D;否则E
D: 计算它们,并将计算结果作为函数值,L
E: 如果第一个运算符是乘除则F;否则H
F: 计算前两个数,并将结果赋值给第二个数。
G: 函数值等于以第二个数为起点的新算式的值。L
H: 如果第一个运算符是+则I;否则J
I: 函数值等于第一个加上以第二个数为起点的算式的值。L
J: 将后面的加号都换成减号,而减号则都换成加号。
K: 函数值等于第一个数减去以第二个数为起点的新算式的值。
L: 返回。

  以此算法得到QB语言程序function jdjs$(a%,b%)(附后)

  虽然调试通过了,却总不满足,一个简单算式的计算好象不至于
如此复杂。为此闷了两天,晚上停电,黑暗中却出现了灵感,赶紧深
入思考,得到思路二:

  根据算术运算先乘除后加减的规则,先搜索算式中的乘除号,进
行计算,其值作为新的元素,代替原来的三个元素,然后再搜索、计
算、替代……直到找不到乘除号,此时的算式只有加减,顺序进行加
减运算,即可得到结果。

  根据思路二,得到算法二:
A: 函数入口,仍需要两个参数a和b。
B: 搜索算式中的乘除号,若有则C;否则E
C: 计算与之相连的前后两个数,并赋值给第一个数。
D: 将后面的各元素均前移两位,形成新的算式,B
E: 如果只有一个元素,则G;否则F
F: 按1±2→2,2±3→3,……的方法顺序计算。
G: 返回最后那个元素的值。

  以此算法得到QB语言程序function jdjs2$(a%,b%)(附后)

  算法二思路简洁清晰,容易实现,而且因不用递归,节省了大量
的堆栈操作,速度也应该更快。

  附:两个简单计算函数源程序说明:程序中的csf()和lx()是主
程序中定义的全局数组变量,csf存储算式各段,lx存储各段类型,这
里规定+1 -2 *3 /4 (5 )6数字7。
```````````````````````````````````````````````````````````

DEFINT A-B, I-N
DEFSTR C
DEFDBL D
FUNCTION jdjs$ (a, b) `简单计算函数之一, 递归算法
IF a = b THEN `如果只有一个元素,则立即返回这个元素
jdjs = csf(a)
ELSE
IF b - a = 2 THEN `如果有三个元素,即"数符数"的形式,则将计算
结果返回
da = VAL(csf(a)): db = VAL(csf(b))
SELECT CASE lx(a + 1)
CASE 1: da = da + db
CASE 2: da = da - db
CASE 3: da = da * db
CASE 4: da = da / db
END SELECT
jdjs = STR$(da)
ELSE `如果有更多的元素,则应根据以下情况分别处理
IF lx(a + 1) = 1 THEN `第一个运算符如果是“+”,则进行递归处理
jdjs = STR$(VAL(csf(a)) + VAL(jdjs(a + 2, b)))
ELSEIF lx(a + 1) = 2 THEN `如果是"-",则需要将后面的加减号对
调,然后进行递归处理
FOR kk = a + 3 TO b - 1 STEP 2
IF lx(kk) = 2 THEN lx(kk) = 1 ELSE IF lx(kk) = 1 THEN lx(kk)
= 2
NEXT
jdjs = STR$(VAL(csf(a)) - VAL(jdjs(a + 2, b)))
ELSE `如果是乘除号,则先计算这两个数并赋值给第二个数,然后进行
递归处理
IF lx(a + 1) = 3 THEN
csf(a + 2) = STR$(VAL(csf(a)) * VAL(csf(a + 2)))
ELSE
csf(a + 2) = STR$(VAL(csf(a)) / VAL(csf(a + 2)))
END IF
jdjs = jdjs(a + 2, b)
END IF
END IF
END IF
END FUNCTION

``````````````````````````````````````````````````````````
DEFINT A-B, I-N
DEFSTR C
DEFDBL D
FUNCTION jdjs2$ (a, b) `简单计算函数之二, 先乘除后加减的算法
DO: ycc = 0 `该循环先进行算式中的乘除运算. Ycc记录算式中有无
乘除号
FOR I = a + 1 TO b - 1 STEP 2
IF lx(I) > 2 THEN
IF lx(I) = 3 THEN
csf(I - 1) = STR$(VAL(csf(I - 1)) * VAL(csf(I + 1)))
ELSE
csf(I - 1) = STR$(VAL(csf(I - 1)) / VAL(csf(I + 1)))
END IF
FOR k = I TO b - 2: csf(k) = csf(k + 2): lx(k) = lx(k + 2): NEXT `整理算式
ycc = 1: EXIT FOR
END IF
NEXT
`FOR kk = a TO b: PRINT kk, csf(kk), lx(kk): NEXT `调试时用来
观察变量
IF ycc = 1 THEN b = b - 2
LOOP UNTIL ycc = 0
IF b > a THEN `再按顺序进行加减运算,如果只有一个元素,则跳过下
面的循环,直接返回它
FOR I = a + 1 TO b - 1 STEP 2
IF lx(I) = 1 THEN
csf(I + 1) = STR$(VAL(csf(I - 1)) + VAL(csf(I + 1)))
ELSE
csf(I + 1) = STR$(VAL(csf(I - 1)) - VAL(csf(I + 1)))
END IF
NEXT
END IF
jdjs2 = csf(b)
END FUNCTION
VB取得长文件名 VB取得临时文件名 VB取得某个目录底下所有文件大小总和 VB取得文件的扩展名 VB取得文件内容 确定 TextBox 有几行-VB资料 确定是 WINDOWS 的可执行文件-VB资料 让打印机只打印一行-VB资料 VB如何把批处理文件转换成EXE文件? VB如何调用 Office VB如何将文件删除到回收站 VB如何快速移动文件? VB如何让文本框输入完后,直接跳入下一行? VB如何使用vb取得一个文件的控制权 VB如何使用文件复制对话框? VB如何使用资源文件 VB如何用Dir()函数来列出C下所有TMP文件并且用文本框输出 VB如何在 VB 中使用 Winzip 来压缩文件? VB如何在DOS程序结束执行时,自动将其关闭? VB如何在VB中实现Undo(撤消)功能? VB如何在VB中实现目录遍历 VB如何在Windows操作系统中改变文件打开方式 VB如何知道硬盘是使用那一种文件系統(FAT32,FAT16)? VB如何自动更动成中文输入 VB删除整个目录 VB设置打印页边距 VB实现文件查找功能 VB使用SendMessage函数滚动文本框控件中的内容 VB使用 WIN95 的选择目录对话框 VB使用INI文件 VB使用WriteFile 块读写数据 页面调度有关的课程设计 关于client端与server端的连接问题 请问能不能在不同用户登陆的情况来决定服务A是否启动。 Textbox如何禁止它记忆以前曾经输入过的值? 我的XP的CPU经常占用90%以上,高手指点. 安装完win2000,又安装了天网防火墙,再安装SQL server 2000,快完成时启动服务警告“无法定位程序输入点” 急招深圳周边(含深圳).Net程序员 ??qustion Laney(6吨大肥猫) 快来啊^@^ 有关struts的<html:text>标签的问题!!!!!!!!!!!!!!!!!!!!!!! 为了考试挑灯夜读,遇到一个菜问题请大家帮忙! 哪位高手帮帮我!时间紧急! 关于还原精灵转储后win98不能启动的问题,请指教!~ 有几张漂亮图片,看看你的计算机是怎么累死的 求C++算法代码。 怎么实现在IE中将查找到的关键字用红色标记指示出来? 求C++算法代码。 请问哪里可以下载Numega DevPartenr Studio 测试工具 ㊣㊣ 什么也不多说了,帮忙给解决这个问题吧, 先多谢了!! ㊣㊣ 有个小小问题 寻找监测某端口的数据流量软件 都市幽灵·里面一定有宝藏 非常奇怪:为什么超链接无效? 显示异常 下个星期开始到新公司了,请大家给点经验,好吗 急!jsp+mysql,急寻blob输出方法!!! 修改记录问题 StringGrid的自画 导出 救命呀,关于XP的激活问题. 语句 请问有什么好的串口调试工具,可以模拟串口发送数据的??????? 简单问题高分相送 MessageBox.Show 方法需要什么样的名空间 使用ghost硬盘刻录硬盘怎么区分源盘和目标盘,请大虾详细说说,在线等 概念性问题(没办法,太笨了,见笑了) vf8支持动态SQL吗? 请问:如何单独安装BDE? 因为你无权连接数据库服务器?? 大家看看一个非常专业的商贸企业管理软件,要源码好商量! 如何清除Image中的图片? 数据库查询一个奇怪问题 关于记事本程序的编写??? 揭贴后的话(告诉大家你的问题解决的怎么样) 如何模拟串口发送数据 如何清除Image中的图片? 出售 .Net 自定义服务器端日历控件 *****加班熬夜何时了,辛苦知多少,小楼昨夜又东风,女友不堪回首睡梦中***** VC中使用ACCESS数据库版本的问题? 有高手来看看这个EXCEPTION是怎么回事??????? 我怎么追踪网页向服务器发送的数据 此题思路?A是什么? 填四大名著《水浒传》中的人物 及时雨( )小旋风( )黑旋风( )智多星(  )豹子头( )神行太保(   )花和尚(  )行者(   )青面兽(  )浪里白头(   ) 柱字开头的成语?马上要 这两题思路是什么啊 水浒传主要人物是;智多星——及时雨——黑旋风—— 寓言家克雷洛夫说过:现实是此岸,理想是彼岸,中间隔着湍急的河流,行动则是架在河上的桥梁.以上材料为题材,写一篇不少于1000字的议论文 车子被大雨浸泡了,能否获得保险理赔? "及时雨会神行太保,黑旋风斗浪里白条"38回涉及到那四条好汉快长板桥头杀气生,横枪立马眼圆睁,一声好似轰雷震,独退曹家百万兵.这局句是在说谁? 苏教版七年级上册数学测试题(有答案) 发生11·15事件,提醒我了,出现这种火灾、台风、暴雨一类的灾害后,怎么做才能快速理赔呢? 水浒传 及时雨 神行太保 黑旋风 浪里白条分别是谁 带柱的成语(越多越好) 商务英语和财经管理你们推荐哪个 义勇军进行曲在当时起到了什么作用 请问带"梁"和带"柱"的成语? 一元二次题目当m为何值时,二次三项式2x^2 +6x-3m1在实数范围内能分解2不能分解3能分解成一个完全平方式 深圳经济特区建立30年来取得重大成就的主要原因有哪些?根本原因是什么? 根据范进中举对下联,上联:三十五载梦想,一朝成真,喜极而疯,看尽世态炎凉. 句子:“突然雷声大作,先是漂下几滴雨点,接着水如柱.”哪两个字错了?并写出正确的. Everyone likes eating ice-cream.Di you every think __1__ where it came from?Who make the first ice-cream?__2___ knows the exact time when it began.Some people said it began __3___ of years ago.Modern(现代的) ice cream first appeared(出现) in Ita 不戚戚于贫贱不汲汲于富贵出自哪篇课文作者是谁 为什么雷声大雨就大 英语完形求解1.She is very good at dance,___everybody knows2,___is known to everybody,the moon travels round the earth once every month3.Have you seen the Titanic,____leading actor is world famous?4.He lives in a hotel,____is only five minute's 证明向量空间必定含有零向量 突然雷声大作,先是飘下几滴雨点,接着雨如柱.有什么错别字? 翻译 顾吾念之,强秦之所以不敢加兵于赵者,徒以吾两人在也 若向量空间含有向量a,则必定含有-a? 夫赵强而燕弱...故燕王欲结于君 翻译 假使我们不去打仗和后面的义勇军进行曲表达的相同的主题是什么? 上联为 故乡尴尬逢闰土 下联为-------于勒 在棱长为a的正方体正方体ABCD-A1B1C1D1中,A到平面BB1D1D的距离为____,AA1到平面BB1D1D的距离为_____ . 假使我们不去打仗 和 义勇军进行曲 二者在写法上又有什么不同? 《故乡》中造成闰土麻木的主要原因是什么? 一元二次问题X^4-X^2-6=0 水浒传中宋江是谁 吴用是谁 柴进是谁 豹子头是谁 花和尚是谁 黑旋风是谁 根据图中五个汉字的不同方位,写出三个成语 上:调 下:腔 左:击 右:声 中:柱上:调 下:腔 左:击 右:声 中:柱 福州化学补习提分快哦?要可靠点的? 求…深圳经济特区成立30周年,写一篇大约400字的论文!从深圳经济特区成立的时间,30周年来的成就!地理优势!自己的的感想!及对深圳的建议!这5个方面写一篇400字的论文!十分感谢!能够有更长 曾经是那样充满生气的闰土,人到中年却活得这样麻木,悲惨的表面上的原因是 福州英语补习提分快哦?要可靠点的? 求一篇初中地理论文,只要400字就行 “颛顼”、“帝喾”怎么读? 正方体ABCD-A1B1C1D1中,棱长为a,E是AA1的中点,在对角面BB1D1D上取一点M,使AM+ME最小,其最小值为要过程 谢谢 含有“柱”字的成语?含有“柱”字的成语是什么啊?想了很久都没想出来也~ 奶是妈妈的好(选择)阅读答案 福州一对一英语补习比较好呢?谁比较懂, 英语翻译 为什么吹一下牛奶(选牛奶是为了看清楚),牛奶就会很规律很对称地划线划圈圈呢? 英语翻译秦应候行千金为反间于赵,曰:秦之所畏,独赵括耳的翻译 含有“柱”“梁”的成语 商场改革经营管理办法后,本月盈利比上月盈利的2倍还多12万元,又知本月盈利比上月盈利多30万元,商场改革经营管理办法后,本月盈利比上月盈利的2倍还多12万元,又知本月盈利比上月盈利多30 福州一对一英语补习哪家好?懂这方便的人来讲下吧? 狮吼虎啸 求狮吼声和虎啸声.能听就行.谢过 中国成立以来,我国交通运输业发展( ) 颛顼介绍 请问福州英语补习哪家好? “有的声音洪大,听起来如虎啸狮吼.”这句话让我联想到什么成语?(至少两个) . 人教版语文五年级下册7单元的生字词 福州英语补习哪里好? 80克月饼有多大 日本一法学系准教授因涉嫌携带毒品被逮美众议院情报委员会就窃听事件举行听证分析称农业补贴政策负面效应渐显 需进温州已婚男爱慕邻家女子遭拒 拐骗其女上海自贸区挂牌满月 壳公司难炒作违规江苏通报九大虚假诉讼案例 法院“内鬼《食品安全法》修订征意见 非法添加最南京政府部门电视问政:道路大开大挖问南京菜市蔬菜供应“青黄不接” 牛羊肉南京海关:海外网购2.5千克以下奶粉营改增助推行业企业升级 业内期望全行日媒称两艘中国军舰通过冲绳附近毗连区《行尸走肉第四季》弩哥达里尔帅气花絮奥巴马极力摆脱“监听门” 美国国安局超强飓风“吹乱”西北欧各国 已致16中国进出口银行巴黎分行正式挂牌营业朝鲜富人如何休闲?【组图】媒体称延迟退休多拿养老金偷换概念 犯罗援:两岸政治议题不能一拖再拖 有十黑龙江一公安局欠债18年不还 当地纪教科书作品付酬办法发布 文字作品每千中国两个“朋友圈”都很热闹(望海楼)存款保险限额偿付 超出50万怎么办(国航航线将覆盖五大洲“西北边境第一团”组建文联梨花风起正清明村民点赞全国“孝星”麦合木提责编:刘 泉邮箱:mingliuzh中外文化交流的见证者(我与海外版)责编:尹婕邮箱:rmrbyinjie狂风袭来 20米高的广告牌被吹倒西安五一国际车展 圆你一个SUV梦想“蝴蝶仙子”“蝴蝶宝宝”海选 报名时忆亲人教育部:校园足球不是大跃进石头都啃了,还怕啃硬骨头?香港球迷人有诗书心不穷陈盆滨:下个目标到喜马拉雅山跑“大白”感谢新媒体 不小心成了“大众“周日营业拉锯战”偷工减料、施工不标准、设计难看
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘