| 编程中国 | 业界新闻 | 技术文章 | 视频教程 | 下载频道 | 程序源码 | 个人空间 | 编程论坛
全能ASP/PHP/ASP.NET主机,支持月付专业 MSSQL 数据库空间,支持月付专业 MySQL 数据库空间,支持月付学习型 ASP/PHP/ASP.NET 主机 30元/年
高端软件开发 = 年薪十万不是梦赛孚耐:软件保护加密专家身份认证令牌USB KEY 
共有 830 人关注过本帖
标题:求教,四则运算计算器如何实现?
收藏  订阅  推荐  打印 
mingvsrun
Rank: 1
等级:新手上路
帖子:3
积分:132
注册:2008-4-13
求教,四则运算计算器如何实现?

小弟今年上大三,刚开始VB的课程。
老师上第一节课的时候就不止了一个题目。
用VB编写一个四则运算计算器,晕啊,咋还没开始学VB呢。
还要求,所有数据在一个框李输入,乘除运算必须高于加减运算。
达人给点指点,不慎感激!
搜索更多相关主题的帖子: 计算器  运算  
2008-9-7 21:00
multiple1902
Rank: 12Rank: 12Rank: 12
等级:版主
威望:40
帖子:4479
积分:45682
注册:2007-2-9

输入表达式?

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

自然表达式的计算很麻烦的

“高考”这个词在耳边不断萦绕,心中的激动不言而喻。写下一句话,一起努力。Let's struggle together.
2008-9-7 21:20
multiple1902
Rank: 12Rank: 12Rank: 12
等级:版主
威望:40
帖子:4479
积分:45682
注册:2007-2-9

如果就是四则运算还好一些,用栈来做。是栈,不是钱。

加上lg啊 sin啊之类的函数真是头大。

“高考”这个词在耳边不断萦绕,心中的激动不言而喻。写下一句话,一起努力。Let's struggle together.
2008-9-7 21:21
multiple1902
Rank: 12Rank: 12Rank: 12
等级:版主
威望:40
帖子:4479
积分:45682
注册:2007-2-9

模拟两个栈,一个放数值,称为A,一个放运算符,称为B。

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

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

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

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

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

运算符的优先级:

#:-1

(:无条件入栈

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

*:2

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

[ 本帖最后由 multiple1902 于 2008-9-7 21:30 编辑 ]
附件: 只有本站会员才能下载或查看附件,请您 登录注册

“高考”这个词在耳边不断萦绕,心中的激动不言而喻。写下一句话,一起努力。Let's struggle together.
2008-9-7 21:24
multiple1902
Rank: 12Rank: 12Rank: 12
等级:版主
威望:40
帖子:4479
积分:45682
注册:2007-2-9

建议找本《数据结构》,栈一节里都会讲到的。

“高考”这个词在耳边不断萦绕,心中的激动不言而喻。写下一句话,一起努力。Let's struggle together.
2008-9-7 21:31
VSeeV
Rank: 4
来自:psychiatric teams
等级:高级会员
威望:1
帖子:485
积分:5158
注册:2008-6-20

搜索随风逐流的帖子
有源代码!
2008-9-8 11:19
mingvsrun
Rank: 1
等级:新手上路
帖子:3
积分:132
注册:2008-4-13

真是太感谢啦,可是可是,俺笨呐,俺不懂。
比如说栈吧,基本理论我是知道的,《数据结构》我也是修过的,可是可是,怎么具体在VB里应用呐,俺还是不知道。
2008-9-12 15:46
multiple1902
Rank: 12Rank: 12Rank: 12
等级:版主
威望:40
帖子:4479
积分:45682
注册:2007-2-9

VB语法会吧?

“高考”这个词在耳边不断萦绕,心中的激动不言而喻。写下一句话,一起努力。Let's struggle together.
2008-9-12 17:58
hyhhd
Rank: 4
等级:高级会员
威望:1
帖子:484
积分:5004
注册:2006-5-12

我是将计算分为单目和双目。我首先将表达式中最里层前后括号的字符串提取出来,将数和运算符分别提取出来放在两个集合中,首先阶乘、not、乘方、三角函数等单目计算,因为单目的计算优先级别高,然后进行乘除加减计算,再进行逻辑运算。直到把所有括号消掉为止。这里面的难题是如何判断如:12 - -Sin30的表达式,第二个“-”是为运算符还是为符号。
我的计算器已能计算32 + Log23 - -(21^4^2 + 5!^Sin30) * (((22*2+2)/2-2)/2-2) + Not23

2008-9-13 00:17
hyhhd
Rank: 4
等级:高级会员
威望:1
帖子:484
积分:5004
注册:2006-5-12

我还搞了一个数据库,可以存储函数(表达式),只需调处所需的函数表达式,制定自变量值就可以算出结果,比如求圆面积:π /4 * ( D^2 - d^2),D=20,d=5。同时,常数也被保存到数据库中,比如π,π=3.14159265358979,e,e=2.71828182845905等。

2008-9-13 00:23
关于我们 | 广告合作 | 编程中国 | 清除Cookies | Archiver | WAP | TOP

编程中国 版权所有,并保留所有权利。鲁ICP备08000592号
Powered by Discuz, Processed in 0.047524 second(s), 9 queries.
Copyright©2004-2008, BCCN.NET, All Rights Reserved