从头到尾看了一下,,,程序不是用来搬的,cond和if的区别在于分支多用cond比较直观而已.我自己的序号排序也是这么用的,一直没有错误.你说的不能实现,是不是一个语句也没有改动就用进去?你的cond语句本来就很奇怪了((and (equal (car (nth 0 1%)) (car (nth 0 2%)) 0.) (equal (cadr (nth 0 1%)) (cadr (nth 0 2%)) 0.) (< (caddr (nth 0 1%)) (caddr (nth 0 2%))) ) t) 请问 (caddr (nth 0 1%)) 是什么意思?每个人用的比较的表不一样,看别人的程序只是看一个结构,,,,,,,,,
其实你自己试验下就知道到底我的语句行不行了,a=((1 2 0)(0 3 0)(1.1 2.5 0)(4 1 0)(5 2 0)),把后面的容差改为0.0,你测试下,,,,
而且,,你的cond语句也有问题.先比较小于,再容差相等,注意,(1 2 0)和(1.1 3 0)和(1.2 4 0)这三个来排序,容差在.5的话,你看看用你的结果会是怎么样,再用秋枫的语句和我的语句测试下,,,你的和他们三个的原来的位置会有关系的.((1 2 0)(1.1 3 0)(1.2 4 0))和((1.1 3 0)(1 2 0)(1.2 4 0))和((1.2 4 0)(1.1 3 0)(1 2 0))三个表用你的排出来是三个不慕峁?,,,,,好象秋枫的程序也有你一样的问题,,,,而我的则永远只有一个结果,,,,你们的cond语句犯的错误应该先容差相等再小于.....好好分析一下你就知道问题所在了,,,不是我的程序if的问题. |