找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 688|回复: 6

[求助] [求助]:这种情况怎么循环?

[复制链接]
发表于 2007-1-8 19:46:08 | 显示全部楼层 |阅读模式

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

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

×
大家新年好!我碰到一个小难题,花了不少时间还没解决,情况如下:
一个数据表里有5个数为1、2、3、4、5,要求1分别与2、3、4、5相加一次,2分别与3、4、5相加一次,3分别与4、5相加一次,4和5相加一次。请问高手有不有比较简单的循环?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 2个

财富等级: 恭喜发财

发表于 2007-1-8 21:28:15 | 显示全部楼层

Re: [求助]:这种情况怎么循环?

最初由 真龙天子 发布
[B]大家新年好!我碰到一个小难题,花了不少时间还没解决,情况如下:
一个数据表里有5个数为1、2、3、4、5,要求1分别与2、3、4、5相加一次,2分别与3、4、5相加一次,3分别与4、5相加一次,4和5相加一次。请问高手有... [/B]

  1.   [FONT=courier new]
  2. ;;;如果只有5个数,不需要循环
  3. (defun 1st (x)
  4.   (car x)
  5. )
  6. (defun 2nd (lst)
  7.   (cadr lst)
  8. )
  9. (defun 3rd (lst)
  10.   (caddr lst)
  11. )
  12. (defun 4th (lst)
  13.   (cadddr lst)
  14. )
  15. (defun 5th (lst)
  16.   (car (cddddr lst))
  17. )
  18. (defun test (lst)
  19.   (list (+ (1st lst) (2nd lst) (3rd lst) (4th lst) (5th lst)) (+
  20.                                                                  (2nd lst)
  21.                                                                  (3rd lst)
  22.                                                                  (4th lst)
  23.                                                                  (5th lst)
  24.                                                               ) (+
  25.                                                                    (3rd lst)
  26.                                                                    (4th lst)
  27.                                                                    (5th lst)
  28.                                                                 )
  29.         (+ (4th lst) (5th lst))
  30.   )
  31. )

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

使用道具 举报

发表于 2007-1-8 22:35:57 | 显示全部楼层
(defun c:jj()
(setq biao (list 1 2 3 4 5))
(setq len (vl-list-length biao))
(repeat (- len 1)
(setq a (car biao))
(setq jieguo (mapcar '(lambda (x)  (+ a x)) (cdr biao)))
(princ "\n")
(princ jieguo)
(princ "\n")
(setq biao (cdr biao))
(princ)
)
(textscr)
)
适用一下
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 7231个

财富等级: 富甲天下

发表于 2007-1-9 08:35:19 | 显示全部楼层
(defun Lst-1 (lst)
   (cond
    ((cadDr lst) (Cons lst (Lst-1 (cdr lst))))
    (T (List Lst))
   )
)


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

使用道具 举报

发表于 2007-1-10 22:02:12 | 显示全部楼层
学习了楼上的。自己编了两个。当中test2运行后有一个问题:就是如何去掉最后结果中表最后一个nil值。我的问题是:如果有一表里有n个表,那么如何去掉n当中任意一个。比如第100个去掉。
[php]
(defun c:test1(/ lst k len n1 n2 n3 n4)
  (setq lst '(1 2 3 4 5))
  (setq k 0)
  (setq len (1- (length lst)))
(while (<= k len)
  (cond
  ((= k 0) (setq n1 (mapcar '(lambda (x) (+ x (nth k lst))) (cdr lst))))
  ((= k 1) (setq n2 (mapcar '(lambda (x) (+ x (nth k lst))) (cddr lst))))
  ((= k 2) (setq n3 (mapcar '(lambda (x) (+ x (nth k lst))) (cdddr lst))))
  ((= k 3) (setq n4 (mapcar '(lambda (x) (+ x (nth k lst))) (cddddr lst))))
  )
  (setq k (1+ k))
)
  (reverse (list n1 n2 n3 n4))
)


(defun c:test2(/ lst k len lis lss)
    (setq lst '(1 2 3 4 5))
    (setq k 0)
    (setq len (1- (length lst)))
(while (<= k len)
    (setq lis (mapcar '(lambda (x) (+ x (nth k '(1 2 3 4 5)))) (cdr lst)))
    (if (= lss nil)
      (progn
      (setq lss (cons lis '()))
      )
      (setq lss (cons lis lss))
    )
    (setq k (1+ k) lst (cdr lst))
)
    (reverse lss)
)


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

使用道具 举报

发表于 2007-1-11 02:25:11 | 显示全部楼层
[php]
(defun xx(lst)
  (mapcar '(lambda(x)(apply '+ (cons (car lst) (setq lst(cdr lst)))))  (cdr lst))
)[/php]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-1-15 14:20:00 | 显示全部楼层
自己摸索出了解决办法,如下
    m为表里元素总数  ptn为数据表
(setq k 0)
     (repeat (- m 1)
            (setq a (nth k ptn))
            (setq n k)
        (repeat (- m k)
               (setq n (+ n 1))
              (setq b (nth n ptn))
               (setq c (+ a b ))
        )
        (setq k (+ k 1))
   )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-17 20:38 , Processed in 0.365597 second(s), 41 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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