[求助]Vlisp新手上路,getint和if判断的两个小问题
<p>(getint "输入一个数")</p><p>接下来我想判断,如果用户输入的数不是5的整数倍,程序终止并报错,否则继续执行程序。</p><p></p><p>(setq l1 1000)<br/>(setq l2 (getint "是否加长:"));<br/> (if (/= l2 nil)<br/> (setq l1 (+ l1 l2))<br/> )<br/>我这段只能加一次,而目的是想让用户输入数值则l1+l2,直接回车则返回当前l1的值。<br/>这是递归的问题吗?该怎样实现呢?</p><p>请指教,谢谢!</p><p></p> <p>1、</p><p>(IF (= (REM (SETQ N (GETINT "\n输入一个数 :"))) 0) (PROGN</p><p> ;……执行内容</p><p>)</p><p> (ALERT "输入错误!")</p><p>)</p><p>2、</p><p>(setq l1 1000)</p><p>(setq l1 (if (setq l2 (getint "是否加长")) (+ l1 l2) l1))</p> <p>感谢版主!</p><p>不过发现了一点小问题</p><p>1/版主提出REM让我明白了怎么解决问题,但版主给出的代码中漏了除以5,我想应该是这样</p><p>(SETQ N (GETINT "\n输入一个数 :"))<br/>(IF (= (REM N 5) 0)<br/> (progn<br/>;执行内容<br/> )<br/> (ALERT "输入错误!")<br/>)</p><p>2/测试过版主的代码,好像也只能执行一次。另外if的第二个参数是变量l1好像不对吧?</p><p>我今天用以下代码解决了这个问题</p><p>(defun jcdl ()<br/> (setq l2 (getint "是否加长电缆:")) ;<br/> (if (/= l2 nil)<br/> (progn<br/> (setq l1 (+ l1 l2))<br/> (jcdl);<br/> )<br/> )<br/>)<br/></p> 本帖最后由 作者 于 2007-7-6 9:59:27 编辑 <br /><br /> <p>不知道这样行不行?</p><p>(defun c:x3 (/ num-1 num-2)</p><p><br/> (setq num-1 1000)</p><p><br/> (if (setq num-2 (getint "\n加长:"))</p><p><br/> (if (zerop (rem num-2 5))</p><p> (setq num (+ num-1 num-2)</p><p> msg (alert "\n进行下一步"))</p><p><br/> (alert "\n输入并非5的倍数,退出。")</p><p><br/> )</p><p><br/> (setq num num-1</p><p> msg (alert "\n无输入时的动作。"))</p><p><br/> )</p><p><br/>)</p><p></p> <p>楼上的把我的两个问题放在一起了。</p><p>不过就加长而言,好像还是只能加长一次。</p><p>也可能是我一开始在问题里就没有说明白。</p><p>感谢各位的帮助!</p>
页:
[1]