只需一步,快速开始
(getint "输入一个数")
接下来我想判断,如果用户输入的数不是5的整数倍,程序终止并报错,否则继续执行程序。
(setq l1 1000)(setq l2 (getint "是否加长:")); (if (/= l2 nil) (setq l1 (+ l1 l2)) )我这段只能加一次,而目的是想让用户输入数值则l1+l2,直接回车则返回当前l1的值。这是递归的问题吗?该怎样实现呢?
请指教,谢谢!
使用道具 举报
1、
(IF (= (REM (SETQ N (GETINT "\n输入一个数 :"))) 0) (PROGN
;……执行内容
)
(ALERT "输入错误!")
2、
(setq l1 1000)
(setq l1 (if (setq l2 (getint "是否加长")) (+ l1 l2) l1))
感谢版主!
不过发现了一点小问题
1/版主提出REM让我明白了怎么解决问题,但版主给出的代码中漏了除以5,我想应该是这样
(SETQ N (GETINT "\n输入一个数 :"))(IF (= (REM N 5) 0) (progn;执行内容 ) (ALERT "输入错误!"))
2/测试过版主的代码,好像也只能执行一次。另外if的第二个参数是变量l1好像不对吧?
我今天用以下代码解决了这个问题
(defun jcdl () (setq l2 (getint "是否加长电缆:")) ; (if (/= l2 nil) (progn (setq l1 (+ l1 l2)) (jcdl); ) ))
不知道这样行不行?
(defun c:x3 (/ num-1 num-2)
(setq num-1 1000)
(if (setq num-2 (getint "\n加长:"))
(if (zerop (rem num-2 5))
(setq num (+ num-1 num-2)
msg (alert "\n进行下一步"))
(alert "\n输入并非5的倍数,退出。")
(setq num num-1
msg (alert "\n无输入时的动作。"))
楼上的把我的两个问题放在一起了。
不过就加长而言,好像还是只能加长一次。
也可能是我一开始在问题里就没有说明白。
感谢各位的帮助!
本版积分规则 发表回复 回帖后跳转到最后一页
小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 ) ©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途
GMT+8, 2024-5-4 22:40 , Processed in 0.455835 second(s), 25 queries , Gzip On.
Powered by Discuz! X3.4
Copyright © 2001-2021, Tencent Cloud.