| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4666 人关注过本帖
标题:求教,四则运算计算器如何实现?
只看楼主 加入收藏
mingvsrun
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2008-4-13
收藏
 问题点数:0 回复次数:23 
求教,四则运算计算器如何实现?
[bo]小弟今年上大三,刚开始VB的课程。
老师上第一节课的时候就不止了一个题目。
用VB编写一个四则运算计算器,晕啊,咋还没开始学VB呢。
还要求,所有数据在一个框李输入,乘除运算必须高于加减运算。
达人给点指点,不慎感激!
[/bo]
搜索更多相关主题的帖子: 计算器 运算 
2008-09-07 21:00
multiple1902
Rank: 8Rank: 8
等 级:贵宾
威 望:42
帖 子:4881
专家分:671
注 册:2007-2-9
收藏
得分:0 
输入表达式?

这个……你还是引用VBScript.ocx库让它帮你算吧……

自然表达式的计算很麻烦的
2008-09-07 21:20
multiple1902
Rank: 8Rank: 8
等 级:贵宾
威 望:42
帖 子:4881
专家分:671
注 册:2007-2-9
收藏
得分:0 
如果就是四则运算还好一些,用栈来做。是栈,不是钱。

加上lg啊 sin啊之类的函数真是头大。
2008-09-07 21:21
multiple1902
Rank: 8Rank: 8
等 级:贵宾
威 望:42
帖 子:4881
专家分:671
注 册:2007-2-9
收藏
得分:0 
模拟两个栈,一个放数值,称为A,一个放运算符,称为B。

B的运算符优先级必须递增的。

一开始先在运算符里放一个优先级为-1的符号(#)。

然后依次扫描,遇到数字就放到A里,遇到运算符,则有以下情况:
1.当前运算符是(,则无条件入栈。

2.当前运算符优先级>栈尾运算符的优先级,则入栈。

3.当前运算符优先级<栈尾运算符的优先级,则取出栈尾的运算符和A栈尾的两个元素,进行运算,然后把答案放入A中。不停重复上述操作直到当前运算符>栈尾运算符。

运算符的优先级:

#:-1

(:无条件入栈

+,-:1,不过先进栈者优先级更大

*:2

):0,不过遇到左括号则两者全部抵消。

[[it] 本帖最后由 multiple1902 于 2008-9-7 21:30 编辑 [/it]]

exp1.png (102.65 KB)
图片附件: 游客没有浏览图片的权限,请 登录注册


exp2.png (134.17 KB)
图片附件: 游客没有浏览图片的权限,请 登录注册


exp3.png (132.31 KB)
图片附件: 游客没有浏览图片的权限,请 登录注册


4.PNG (133.91 KB)
图片附件: 游客没有浏览图片的权限,请 登录注册


5.PNG (161.17 KB)
图片附件: 游客没有浏览图片的权限,请 登录注册


6.PNG (113.03 KB)
图片附件: 游客没有浏览图片的权限,请 登录注册


7.PNG (142.78 KB)
图片附件: 游客没有浏览图片的权限,请 登录注册


8.PNG (99.97 KB)
图片附件: 游客没有浏览图片的权限,请 登录注册


9.PNG (95.98 KB)
图片附件: 游客没有浏览图片的权限,请 登录注册
2008-09-07 21:24
multiple1902
Rank: 8Rank: 8
等 级:贵宾
威 望:42
帖 子:4881
专家分:671
注 册:2007-2-9
收藏
得分:0 
建议找本《数据结构》,栈一节里都会讲到的。
2008-09-07 21:31
VSeeV
Rank: 1
来 自:psychiatric teams
等 级:新手上路
威 望:1
帖 子:555
专家分:0
注 册:2008-6-20
收藏
得分:0 
搜索随风逐流的帖子
有源代码!
2008-09-08 11:19
mingvsrun
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2008-4-13
收藏
得分:0 
真是太感谢啦,可是可是,俺笨呐,俺不懂。
比如说栈吧,基本理论我是知道的,《数据结构》我也是修过的,可是可是,怎么具体在VB里应用呐,俺还是不知道。
2008-09-12 15:46
multiple1902
Rank: 8Rank: 8
等 级:贵宾
威 望:42
帖 子:4881
专家分:671
注 册:2007-2-9
收藏
得分:0 
VB语法会吧?
2008-09-12 17:58
hyhhd
Rank: 2
等 级:论坛游民
威 望:1
帖 子:502
专家分:44
注 册:2006-5-12
收藏
得分:0 
我是将计算分为单目和双目。我首先将表达式中最里层前后括号的字符串提取出来,将数和运算符分别提取出来放在两个集合中,首先阶乘、not、乘方、三角函数等单目计算,因为单目的计算优先级别高,然后进行乘除加减计算,再进行逻辑运算。直到把所有括号消掉为止。这里面的难题是如何判断如:12 - -Sin30的表达式,第二个“-”是为运算符还是为符号。
我的计算器已能计算32 + Log23 - -(21^4^2 + 5!^Sin30) * (((22*2+2)/2-2)/2-2) + Not23

2008-09-13 00:17
hyhhd
Rank: 2
等 级:论坛游民
威 望:1
帖 子:502
专家分:44
注 册:2006-5-12
收藏
得分:0 
我还搞了一个数据库,可以存储函数(表达式),只需调处所需的函数表达式,制定自变量值就可以算出结果,比如求圆面积:π /4 * ( D^2 - d^2),D=20,d=5。同时,常数也被保存到数据库中,比如π,π=3.14159265358979,e,e=2.71828182845905等。

2008-09-13 00:23
快速回复:求教,四则运算计算器如何实现?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.042039 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved