dinosaurhxe 发表于 2007-7-4 19:15:00

[求助]Vlisp新手上路,getint和if判断的两个小问题

<p>(getint "输入一个数")</p><p>接下来我想判断,如果用户输入的数不是5的整数倍,程序终止并报错,否则继续执行程序。</p><p></p><p>(setq l1 1000)<br/>(setq l2 (getint "是否加长:"));<br/>&nbsp; (if (/= l2 nil)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq l1 (+ l1 l2))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>我这段只能加一次,而目的是想让用户输入数值则l1+l2,直接回车则返回当前l1的值。<br/>这是递归的问题吗?该怎样实现呢?</p><p>请指教,谢谢!</p><p></p>

ZZXXQQ 发表于 2007-7-5 12:32:00

<p>1、</p><p>(IF (= (REM (SETQ N (GETINT "\n输入一个数 :"))) 0) (PROGN</p><p>&nbsp;;……执行内容</p><p>)</p><p>&nbsp;(ALERT "输入错误!")</p><p>)</p><p>2、</p><p>(setq l1 1000)</p><p>(setq l1 (if (setq l2 (getint "是否加长")) (+ l1 l2) l1))</p>

dinosaurhxe 发表于 2007-7-5 22:29:00

<p>感谢版主!</p><p>不过发现了一点小问题</p><p>1/版主提出REM让我明白了怎么解决问题,但版主给出的代码中漏了除以5,我想应该是这样</p><p>(SETQ N (GETINT "\n输入一个数 :"))<br/>(IF (= (REM N 5) 0)<br/>&nbsp; (progn<br/>;执行内容<br/>&nbsp; )<br/>&nbsp; (ALERT "输入错误!")<br/>)</p><p>2/测试过版主的代码,好像也只能执行一次。另外if的第二个参数是变量l1好像不对吧?</p><p>我今天用以下代码解决了这个问题</p><p>(defun jcdl ()<br/>&nbsp; (setq l2 (getint "是否加长电缆:"))&nbsp;;<br/>&nbsp; (if (/= l2 nil)<br/>&nbsp;&nbsp;&nbsp; (progn<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq l1 (+ l1 l2))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (jcdl);<br/>&nbsp;&nbsp;&nbsp; )<br/>&nbsp; )<br/>)<br/></p>

7686599 发表于 2007-7-6 09:53:00

本帖最后由 作者 于 2007-7-6 9:59:27 编辑 <br /><br /> <p>不知道这样行不行?</p><p>(defun c:x3 (/ num-1 num-2)</p><p><br/>&nbsp; (setq num-1 1000)</p><p><br/>&nbsp; (if (setq num-2 (getint "\n加长:"))</p><p><br/>&nbsp;&nbsp;&nbsp; (if&nbsp;(zerop (rem num-2 5))</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq&nbsp;num (+ num-1 num-2)</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; msg&nbsp; (alert "\n进行下一步"))</p><p><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (alert "\n输入并非5的倍数,退出。")</p><p><br/>&nbsp;&nbsp;&nbsp; )</p><p><br/>&nbsp;&nbsp;&nbsp; (setq num num-1</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; msg (alert "\n无输入时的动作。"))</p><p><br/>&nbsp; )</p><p><br/>)</p><p></p>

dinosaurhxe 发表于 2007-7-6 23:40:00

<p>楼上的把我的两个问题放在一起了。</p><p>不过就加长而言,好像还是只能加长一次。</p><p>也可能是我一开始在问题里就没有说明白。</p><p>感谢各位的帮助!</p>
页: [1]
查看完整版本: [求助]Vlisp新手上路,getint和if判断的两个小问题