怎样判断两个数学表达式是否相等(50分)

  • 主题发起人 lkw_sql1
  • 开始时间
L

lkw_sql1

Unregistered / Unconfirmed
GUEST, unregistred user!
例如,有四个表达式
1,
(A+B-C)*D
2,
(B+A-C)*D
3,
(B-C+A)*D
4
D*(A+B-C)
这四个表达式都是一样的,只是其中的操作数的位置不同;
请问怎判断这些表达是相等的;
(注:这里的相等不是指计算结果值)
 
给个建议吧,不给出代码也行,有代码就更好啦
 
判断每个算子前面的运算符,然后按统一序列排列算子与其前面的运算符,这样四个式子均可化为(A+B-C)×D的形式
 
有的脚本支持编译伪码,如果编译后伪码一样的应该是相等的
 
语法分析,看看计算机算法吧
 
SandWater:
可以具体给点意见吗?偶不知道你说是怎样的算法?
 
这个恐怕一定要写出四则混合运算的计算法则来才行吧。
 
表达式求值时,用"栈"来判断运算符的先后顺序的;
(4+9-5)*3 => 4 9 +5 -3 *
(4-5+9)*3 => 4 5 -9 +3 *
(9+4-5)*3 => 9 4 +5 -3 *
(9-5+4)*3 => 9 5 -4 +3 *
式子右边是计算的先后顺序,
我想按一定的顺序来排列这字符串
(
当运算符同优先级,先+后-,先*后/;
当运算符为+,*,算子从大到小
)
这样得到的右边字符串相等吗?还有什么情况要考虑的,请各位指点;
 
将代括号的表达式展开为不带括号的结果,然后用统一的排序方式排序(比如: 1*A*D +
1*B*D + -1*C*D),比较各项的因子、系数是否完全一致。
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
952
SUNSTONE的Delphi笔记
S
S
回复
0
查看
775
SUNSTONE的Delphi笔记
S
顶部