找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1723|回复: 16

[求助] [求助]:想一想怎么编一个这样程序

[复制链接]
发表于 2005-3-27 10:39:22 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
member函数:搜索表中是否包含某表达式,并从该表达式的第一次出现处返回表的其余部分。
那么:搜索表中是否包含某表达式,并从该表达式的第一次出现处返回表的前面部分”程序该怎么编?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2005-3-28 22:28:59 | 显示全部楼层
很简单:
(DEFUN reversemember(ITEM yourlist / needlist);;if item in yourlist
   (setq yourlist (reverse yourlist))
   (setq needlist (member item yourlist));;如果你不想ITEM在其中则  
                             ;;(setq needlist (cdr(member item yourlist)))
   (setq needlist (reverse needlist))
  needlist
)

that's all!!!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 10398个

财富等级: 富甲天下

发表于 2005-3-28 23:05:50 | 显示全部楼层
最初由 舟自横 发布
[B]很简单:
(DEFUN reversemember(ITEM yourlist / needlist);;if item in yourlist
   (setq yourlist (reverse yourlist))
   (setq needlist (member item yourlist));;如果你不想ITEM在其中则  
              ... [/B]

若表中的ITEM有二个以上,就可能返回最后一个ITEM之前的表。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-3-29 08:53:16 | 显示全部楼层
那样的情况你可以想得到只可能是第一项会是重复的
你可以将上面程序返回的列表去掉第一个重复项,那样的
程序想大虾你自己也应该想得出来吧!
另给一个去掉列表中所有重复项功能的函数供参考:
(defun hy_erasedouble(nlist / needlist)
  (setq needlist nlist)
  (foreach item nlist (setq needlist (append (list item) (vl-remove item needlist)))
    )
  (reverse needlist))
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-3-29 21:35:52 | 显示全部楼层
ok,明白谢谢
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-3-30 01:50:00 | 显示全部楼层
同意3楼,2楼程序不完善,例子
(1 2 3 4 3 5)
reverse = 5 3 4 3 2 1
member 3 = 3 4 3 2 1
reverse = 1 2 3 4 3
与要求的结果 1 2 有误
"你可以将上面程序返回的列表去掉第一个重复项,"
但是如果3不止是2个呢?比如
( 1 2 3 4 3 5 3 6 3 3 4 3 2)

试试我这个:
(defun tt (x lst / a )
(while (not (equal x (setq a (car lst))))
    (setq lst2 (cons a lst2)
            lst (cdr lst))
) (reverse lst2)
)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 10398个

财富等级: 富甲天下

发表于 2005-3-30 20:25:02 | 显示全部楼层
最初由 狂刀 发布
[B]同意3楼,2楼程序不完善,例子
(1 2 3 4 3 5)
reverse = 5 3 4 3 2 1
member 3 = 3 4 3 2 1
reverse = 1 2 3 4 3
与要求的结果 1 2 有误
"你可以将上面程序返回的列表去掉第一个重复项,"
但是如果3不止是2个呢?...但是如果3不止是2个呢?...
试试我这个:
(defun tt (x lst / a )
(while (not (equal x (setq a (car lst))))
(setq lst2 (cons a lst2)
lst (cdr lst))
) (reverse lst2)
)[/B]

但您的程序在表项不是数字或字符串时判断会出错!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-3-30 21:21:36 | 显示全部楼层
why??? 理由?

(defun tt (x lst / a lst2)
  (while (not (equal x (setq a (car lst))))
    (setq lst2 (cons a lst2)
          lst  (cdr lst)
    )
  )
  (reverse lst2)
)

;;测试
(tt '(2 3) '(1 "b" (2 3) 5 (2 3) "aa"))  ->(1 "b")
(tt 5 '(1 "b" (2 3) 5 (2 3) "aa")) ->(1 "b" (2 3))
(tt "aa" '(1 "b" (2 3) 5 (2 3) "aa")) ->(1 "b" (2 3) 5 (2 3))
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 10398个

财富等级: 富甲天下

发表于 2005-4-1 20:46:31 | 显示全部楼层
是我未经仔细测试。但您的程序在表项不存在时会死循环!
进行更改如下:

(defun tt (x lst / a lst2)
(while (and (not (equal x (setq a (car lst)))) (> (length lst) 0))
(setq lst2 (cons a lst2)
lst (cdr lst)
)
)
(reverse lst2)
)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-4-1 21:28:42 | 显示全部楼层

  1. (defun tt (x lst / a lst2)
  2.   (while (and lst (not (equal x (setq a (car lst)))))  ;;will be ok
  3.     (setq lst2 (cons a lst2)
  4.               lst (cdr lst)
  5.     )
  6.   )
  7.   (reverse lst2)
  8. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 488个

财富等级: 日进斗金

发表于 2005-5-17 23:22:25 | 显示全部楼层
(length lst) - (length (member x lst))
个数知道了,下面就简单了.
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-5-20 15:40:19 | 显示全部楼层
楼上的都不错,相比之下我的就原始了,不过拿出来给大家看看
(defun zw-fmember (dl dla / dlb n1 n2 dlp i)
       (setq dlb (member dla dl))
       (setq n1 (length dl) i 0)
       (setq n2 (length dlb))
       (setq dlp '())
       (repeat (- n1 n2)
               (setq dlc (nth i dl))
               (setq dlp (append (list dlc) dlp))
               (setq i (+ i 1))
       );;repeat
       (reverse dlp)
);;defun
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-5-27 18:36:39 | 显示全部楼层
向大家多學習
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-10-18 12:05:38 | 显示全部楼层
你们都是高手,我向你们学习。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 2个

财富等级: 恭喜发财

发表于 2005-10-18 17:26:32 | 显示全部楼层
11楼想法很好,实现也容易
我认为此法很好,简单易行。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-11-15 09:08 , Processed in 0.281677 second(s), 59 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表