只需一步,快速开始
求各路高手帮小弟学一个计算式程序(lisp)
功能如下:
假设在CAD中输入一个数学式子1):1+4+5*2+(5+5)/2+[(6+6)/2+(5+5)/2]
利用(lisp)程序中的命令js(计算的第一个字母)得出该式子的结果
(1):1+4+5*2+(5+5)/2+[(6+6)/2+(5+5)/2]=31
谢谢高手们帮帮忙..........
使用道具 举报
这个问题很有意思,
我想按照运算符分级的思路(层层剥皮)是可以。
"{" "[" "]" "}" 之类的要全替换成小括号"(" ")"
CAD中本来就有CAL命令
到了lisp中成了函数 (C:CAL 字符表达式)
试试是你想要的吧~
还有就是调用VBA中的的eval方法来计算
在VBS,js中也有eval函数也可以用vlisp调用的
三楼说的不错,CAD自带CAL命令。
如果你想编程实现,那就用需要用到类似于实现lisp编辑器的功能,对括号的判断和运算符的移位处理。
这个题目有挑战性。
我以前也有这个想法。
因为用cal的方法或者smallVBA的方法速度上要打一个很大的折扣,特别是VBS,我以前曾经做过试验,对于同一个计算表达式,如果用VBS的方法求,速度要比翻译成lisp的函数慢上100倍。
CAL也没有翻译成lisp的函数的快。而且对于角的度量单位来说,CAL用的是角度,而不是弧度,要转换,很不方便。
当然计算量不大的情况下可以CAL和VBS都可以。如果运算达到上万次就不太适用了。
希望大家共同把这个难题完成。
highflybir发表于2007-7-21 14:43:00这个题目有挑战性。我以前也有这个想法。因为用cal的方法或者smallVBA的方法速度上要打一个很大的折扣,特别是VBS,我以前曾经做过试验,对于同一个计算表达式,如果用VBS的方法求,速度要比翻
在CAD里手动输入上万次的运算不大现实,其实cal已经足够用了
至于角度单位可以自己写程序处理一下,再调用cal
你没能明白我的意思。
有些情况是可能重复运算某个表达式一万 次以上,
譬如,我们得到一个: x^2-sin(x)+[(x-x^2+exp(x))*2-2]之类的复杂表达式,这里x是个变量,要对这个变量计算万 次以上的值时 ,cal就不够用了。
楼主的情况跟这个类似,也都可以用lisp函数来表达。
在很多语言里面,都能把表达式直接翻译成函数,但是lisp中没有,所以我希望能完成这个挑战。
本版积分规则 发表回复 回帖后跳转到最后一页
小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 ) ©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途
GMT+8, 2025-5-19 19:44 , Processed in 0.197512 second(s), 28 queries , Gzip On.
Powered by Discuz! X3.4
Copyright © 2001-2021, Tencent Cloud.