怎么实现四则混合运算(100分)

  • 主题发起人 主题发起人 yc-zhj
  • 开始时间 开始时间
Y

yc-zhj

Unregistered / Unconfirmed
GUEST, unregistred user!
有任意的一个四则混合运算式,如:(54+48-25X(5-3))/2
我怎样在能得到结果,我怎样才能编程实现它,有谁知道这个程序怎么
编写,思路和算法是怎样的?
谢谢个位大虾指点!
 
做过计算器吗?
思路差不多,只是得自己提取字符并分辨
 
如果你用在数据库系统开发,尽管用
比如oracle
select (54+48-25X(5-3))/2 from dual   [:D]
 
我主要是括号不好解决,有什么方法好解决的?
 
如果仅仅是写个计算器, 其实很简单, 用递归下降的语法分析方法用
半个小时就能够写出来. 你先写一个词法分析的程序, 负责把输入的
字符串按照 整数, 浮点数, 运算符等等分开, 然后就按照递归下降的
语法分析处理就可以了.

Expression -> SimpleExpression [RelOp SimpleExpression]...
SimpleExpression -> ['+' | '-'] Term [AddOp Term]...
Term -> Factor [MulOp Factor]...
Factor -> Number
-> String
-> '(' Expression ')'
-> NOT Factor

RelOp -> '>'
-> '<'
-> '<='
-> '>='
-> '<>'

AddOp -> '+'
-> '-'
-> OR
-> XOR

MulOp -> '*'

-> '/'
-> DIV
-> MOD
-> AND
-> SHL
-> SHR

 
清华版《数据结构》的堆栈一章中有例子
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部