菡萏 发表于 2012-4-7 21:11:14

zzl9105 发表于 2012-4-7 21:01 static/image/common/back.gif
(setq l (vl-sort l '(lambda (a b) (< (car a) (car b)))))
这样排序,在结果中,就会把相同的car项,忽 ...

不会忽略掉的

zzl9105 发表于 2012-4-7 21:25:09

菡萏 发表于 2012-4-7 21:11 static/image/common/back.gif
不会忽略掉的

(vl-sort '((A7 3) (A3 7) (A3 5) (A4 2))
            (function (lambda (e1 e2)               
                     (< (car e1) (car e2)))))

错误 : 用于比较的参数类型不正确: A3 A7

出错了,我要比较的,是前面的编号,可是它又带前缀的,结果还是比不了?如何处理

zzl9105 发表于 2012-4-7 21:37:39

(vl-sort
   '(a1 a2 c b a1)
   '(lambda (s1 s2)
    (< (vl-symbol-name s1) (vl-symbol-name s2)) ) )
这样的排序,又把相同的忽略掉了,晕菜

luogj18 发表于 2012-4-7 21:48:08

感谢楼主分享
认真学习一下

zzl9105 发表于 2012-4-8 10:36:52

本帖最后由 zzl9105 于 2012-4-8 20:31 编辑


(setq i   1
      old (car (car LST))
)
(mapcar '(lambda (x)
             (if (/= X old)
               (progn
               (setq i   (1+ i)
                     oldx
               )
               (cons (strcat "AZ" (itoa i)) (cadr x));;返回表中元素值
               )
               (cons (strcat "AZ" (itoa i)) (cadr x));;返回表中元素值
             );;if
         );;函数lambda
          LST;;返回运算后的表
)
参数类型出错了,(cadr x),测试时,这个值,怎么是nil呢?奇怪,我贴出来大家帮我看看,我的表是这样的:
(("AZ4" . <图元名: 7efc3818>) ("AZ4" . <图元名: 7efc3710>) ("AZ3" . <图元名: 7efc36e8>) ("AZ1 ". <图元名: 7efc36d0>))

zzl9105 发表于 2012-4-8 18:26:49

本帖最后由 zzl9105 于 2012-4-8 18:32 编辑

菡萏 发表于 2012-4-4 09:44 http://bbs.mjtd.com/static/image/common/back.gif


利用4楼的程序,如15楼的稍加修改,可否对15楼提供的表对,进行不连续号的连续处理,按(AZ1,。。。)(AZ2。。。)。。。。。。。

15楼是照葫芦画瓢来的,不过没搞成功,不知道错在哪里。。。。。。。。。
请指教

zzl9105 发表于 2012-4-8 18:50:39

命令: (setq x '("AZ4" . <图元名: 7efc3818>))
错误 : 输入的点对中含有多余的 cdrs
这句为何错了???

cabinsummer 发表于 2012-4-10 01:01:47

取点对后一项的函数是cdr,而不是cadr。点对是一种特殊的数据结构

vlisp2012 发表于 2012-4-10 13:26:49

还没看懂,先顶了!!!!

zzl9105 发表于 2012-4-12 22:44:51

cabinsummer 发表于 2012-4-10 01:01 static/image/common/back.gif
取点对后一项的函数是cdr,而不是cadr。点对是一种特殊的数据结构

谢谢高人出手指教,我再抽空改改试试,看能不能达到我前面发的截图的效果。
页: 1 [2]
查看完整版本: 冒泡排序问题