- UID
- 8476
- 积分
- 442
- 精华
- 贡献
-
- 威望
-
- 活跃度
-
- D豆
-
- 在线时间
- 小时
- 注册时间
- 2002-8-4
- 最后登录
- 1970-1-1
|
发表于 2006-5-7 09:33:19
|
显示全部楼层
也不大懂最后的重心是怎么回事,修改了一下,你的程序应该还是没有完整吧
如下,也不一定符合你的要求,但大概可以计算一下,
觉得问题主要还是出在plus和multiply这两个函数,
1.主要应该是mres没有赋予初值,所以它为null时,(float (atof mres))就会有问题
2.个人习惯,不希望dcl中的key和函数中的变量重名,这样容易搞错,所以我把sres变量改为sres1.
效果如下,那个除数和重心的关系不懂,是不是还没有编完
[php]
;;;建立两数相乘函数
(defun multiply ()
(setq len nil
wei nil
sres1 nil
)
(while (null len)
(setq len (float (atof l)))
(while (null wei)
(setq wei (float (atof w)))
)
)
(setq sres1 (* len wei))
(set_tile "sres" (rtos sres1 2 4))
)
;;;建立累加函数
(defun plus ()
(if (= mres1 nil)(setq mres1 0))
(setq s nil m nil)
(while (null s)
(setq s sres1)
(while (null m)
(setq m mres1)
)
)
(setq mres1 (+ s m))
(set_tile "mres" (rtos mres1 2 4))
)
;;;建立相除函数
(defun divide ()
(setq bcen (/ mres div))
)
;;;建立主函数
(defun c:barycenter ()
(setq mres1 nil)
(if (> (setq index_value (load_dialog "barycenter")) 0)
(progn
(if (new_dialog "barycenter" index_value)
(progn
(set_tile "l" "")
(set_tile "w" "")
(set_tile "sres" "")
(set_tile "mres" "")
(set_tile "div" "")
(set_tile "bcen" "")
(action_tile "l" "(setq l $value)")
(action_tile "w" "(setq w $value)")
(action_tile
"cou"
"(multiply)(plus)"
)
(action_tile "div" "(setq div $value)")
(action_tile "accept" "(setq bcen (divide))")
(action_tile "cancel" "(done_dialog 0)")
(start_dialog)
)
(alert "不能显示对话框!")
)
(unload_dialog index_value)
)
(alert "不能装入对话框!")
)
(princ)
)
[/php] |
|