C chll Unregistered / Unconfirmed GUEST, unregistred user! 2002-08-13 #1 请问各位大哥,在Delphi中,如何实现计算一个带变量的算术表达式的算法?? 是不是要用到栈??
H HunterTeam Unregistered / Unconfirmed GUEST, unregistred user! 2002-08-13 #2 或者你也可以将表达式中的各个变量值存入一个表的一条记录中,然后用SQL语句进行计算。
I ierryw Unregistered / Unconfirmed GUEST, unregistred user! 2002-08-13 #4 没有必要用到栈的,你可以在计算的时候建一张temp表,把变量的值存入表中,随时调用!
Y yanghai0437 Unregistered / Unconfirmed GUEST, unregistred user! 2002-08-13 #5 如果变量的个数已知,就可以用数组分别保存变量名和变量的值,如果未知,也可用动态数组.
L LeeChange Unregistered / Unconfirmed GUEST, unregistred user! 2002-08-13 #7 比如计算A+B*C a=1, b=2, c=3; 先把值代入,将表达式变为 1+2*3; 再 with Query do begin Close; SQL.Clear; SQL.Append('select '+express/*1+2*3*/); Open; Return:=Fields[0].AsFloat end
比如计算A+B*C a=1, b=2, c=3; 先把值代入,将表达式变为 1+2*3; 再 with Query do begin Close; SQL.Clear; SQL.Append('select '+express/*1+2*3*/); Open; Return:=Fields[0].AsFloat end
C chll Unregistered / Unconfirmed GUEST, unregistred user! 2002-08-13 #8 现在是要用户自己输入带变量的算术表达式,并能计算结果。具体怎么实现?? 我记得《数据结构》中,有这么一算法,是用栈实现的,我不记得了,哪位兄弟还记得?? 帮帮我好吗???
W wb_l Unregistered / Unconfirmed GUEST, unregistred user! 2002-08-14 #10 "要用户自己输入带变量的算术表达式"难度比较大吧 看下面的思路对你有没有帮助: 1.为用户定制好变量,如:x,y,z等; 2.如何处理各种运算符号?
L LeeChange Unregistered / Unconfirmed GUEST, unregistred user! 2002-08-14 #11 to chll: 数据结构中是用两个栈的,一个放变量,一个放运算符. 编译原理中是用逆波兰表达式做的,要构造二叉树. 但为了实现结果,最简单的办法就是用select语句.
W whitehorse Unregistered / Unconfirmed GUEST, unregistred user! 2002-08-14 #12 如果是用户的算式是任意的,就是设计一个计算器。或查找有关数据结构与算法的书。 如楼上说采用逆波兰表达式。 如果算式是固定的,可以设计一个数据库表。 如算式 (a*b*c-d+e)/2 可以用一个或下结构的数据库表 算式编号 算式名称 数字a 数字b 数字c 数字d 数字e 结果 1 2 如果算式只有一个可以用一个带参数的sql语句实现
如果是用户的算式是任意的,就是设计一个计算器。或查找有关数据结构与算法的书。 如楼上说采用逆波兰表达式。 如果算式是固定的,可以设计一个数据库表。 如算式 (a*b*c-d+e)/2 可以用一个或下结构的数据库表 算式编号 算式名称 数字a 数字b 数字c 数字d 数字e 结果 1 2 如果算式只有一个可以用一个带参数的sql语句实现
C creation-zy Unregistered / Unconfirmed GUEST, unregistred user! 2002-08-14 #13 请看 http://www.delphibbs.com/delphibbs/dispq.asp?lid=1190390 其中 floweasy2001 的帖子——详细的源代码!
C Crosman Unregistered / Unconfirmed GUEST, unregistred user! 2002-08-14 #14 SQL.Append('select '+express/*1+2*3*/); 怎么可能?解决了值的问题,运算符呢? 算法实现比较困难。 可以找个delphi的控件。
L LeeChange Unregistered / Unconfirmed GUEST, unregistred user! 2002-08-15 #15 to Crosman: 您老会用SQL语句吗?
轻 轻松虎 Unregistered / Unconfirmed GUEST, unregistred user! 2002-08-15 #16 我做过表达式/公式解析器,支持自定义变量, 如果支持自定义函数就更高级了,甚至流程控制控制。。。现在我用的控件是一个 Pascal 脚本解析器(支持函数,数组,循环,伪编译,甚至 Form,整个一虚拟机),很舒服。
我做过表达式/公式解析器,支持自定义变量, 如果支持自定义函数就更高级了,甚至流程控制控制。。。现在我用的控件是一个 Pascal 脚本解析器(支持函数,数组,循环,伪编译,甚至 Form,整个一虚拟机),很舒服。
W wb_l Unregistered / Unconfirmed GUEST, unregistred user! 2002-08-16 #17 to 轻松虎: 能不能给我一份:wb_l@eyou.com
C chll Unregistered / Unconfirmed GUEST, unregistred user! 2002-08-16 #18 楼上老兄,你说的那东西能不能给小弟我发一个,无论什么要求都行,我现在正急需。 我的邮箱:ling99313@sina.com
轻 轻松虎 Unregistered / Unconfirmed GUEST, unregistred user! 2002-08-16 #19 已经给你们发了:) 另外参考:其他一些相对较小也不错的公式解析和脚本控件: http://www.torry.net/scripts.htm