求助:如何在lisp中实现数组
<P>(defun qujian()<BR> (setq n(getint "请输入段数")) <BR> (setq n0 1)<BR> <BR> (while (<= n0 n)<BR> (setq m(getreal "请输入第"n"段跨距"))<BR> (setq n0 (+ n0 1))<BR> ))</P><P>每个段对应一个数据,但是其中m我不知道该怎么样才能定义成一个数组,而且不知道怎样赋下标.求各位高手帮助,不胜感激了!!!</P> 可以组成点对 (X . Y),用car 得到X ,cdr得到 Y 用cons函数或append函数将其变成一个表就行了 其实在lisp中的表就相当于c语言中的数组 本帖最后由 作者 于 2006-4-26 16:08:21 编辑 <br /><br /> <P>二楼好主意,如下</P>
<P>(defun c:qujian ()<BR> (setq n (getint "请输入段数"))<BR> (setq n0 1)<BR> (setq r_list '())<BR> (while (<= n0 n)<BR> (setq tt (strcat "\n请输入第" (itoa n0) "段跨距:"))<BR> (setq m (getreal tt))<BR> (setq r_list (cons (cons n0 m) r_list))<BR> (setq n0 (+ n0 1))<BR> )<BR>)</P>
<P>;形成类似((5 . 5.0) (4 . 4.0) (3 . 3.0) (2 . 2.0) (1 . 1.0))的表<BR>;取数时用(assoc n r_list)即可,可以较好的模拟c里面的数组操作</P>
<P>还有:</P>
<P>;|vlax数组类操作函数<BR>(vlax-make-safearray)<BR>(vlax-safearray-fill)<BR>(vlax-safearray-get-dim)<BR>(vlax-safearray-get-element)<BR>(vlax-safearray-get-l-bound)<BR>(vlax-safearray-get-u-bound)<BR>(vlax-safearray->list)<BR>(vlax-safearray-put-element)<BR>(vlax-safearray-type)</P>
页:
[1]