找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 4794|回复: 12

[求助] [LISP程序]:求助几个数连乘积

[复制链接]
发表于 2005-8-31 16:07:01 | 显示全部楼层 |阅读模式

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

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

×
求助几个数连乘积的lsp.......
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2005-8-31 16:58:49 | 显示全部楼层
什么呀?能不能说的详细一点儿!
大家也好帮你呀!
你这说的题目也太简单了吧,无从下手!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-8-31 17:14:09 | 显示全部楼层
举个例子来说:

1*2*3*4*5*6*7*8*9*10=3628800
我想这样来实现:选中数字1 2 3 4 5 6 7 8 9 10 ,然后选中任意一个数字x , 那么x就变成了前面选中数字的连乘积。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-8-31 19:46:13 | 显示全部楼层
1*2*3*4*5*6*7*8*9*10=4485600 ?!

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

使用道具 举报

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

使用道具 举报

发表于 2005-9-1 10:32:04 | 显示全部楼层
只是个简单的阶乘问题程序如下:
(defun c:jc()
  (setq numb (getreal "请输入阶乘数:"))
  (setq jc 2)   ;;;;循环控制变量
  (setq xj 1) ;;;乘积数统计变量
(WHILE (<= jc numb)
        (setq xj (* jc xj))
    (setq jc (+ jc 1) )
        )
  (prompt (strcat "1到" (rtos numb) "的乘积为:" (rtos xj)))
  (princ)
)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-9-1 12:46:03 | 显示全部楼层
不一定是阶乘噢,那个我只是随便举的一个例子。同样感谢楼上的
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

发表于 2005-9-1 21:39:11 | 显示全部楼层
这么简单楼上几位估计都没兴趣:
(defun c:test()
(setq en(entsel"\n选择要连乘的数字:"))
(setq xx(rtos(getdxf en 1)))
(while (setq next(entsel"\n选择下一个数字:"))
(setq xx(* xx  (rtos(getdxf next 1))))
)
(princ "\n乘积:")
(princ xx)
)
(defun getdxf (en dxf)
(cdr(assoc code (entget (car en))))
)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

发表于 2005-9-4 09:26:38 | 显示全部楼层
SORRY,太马虎了:

(defun c:test(/ en xx next )
(setq en(entsel"\n选择要连乘的数字:"))
(setq xx(atof(getdxf en 1)))
(while (setq next(entsel"\n选择下一个数字:"))
(setq xx(* xx (atof(getdxf next 1))))
)
(princ "\n乘积:")
(princ xx)
(princ)
)
(defun getdxf (en dxf)
(cdr(assoc dxf (entget (car en))))
)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-9-5 10:10:41 | 显示全部楼层
感谢楼上的。可是你的结果只能在命令行出来,我想在CAD绘图窗口直接出来结果,这样就不用再编辑了,(就是在一个原有数字的基础上点击之后就出来连乘积结果了)。出来这个结果是实型的,有很多小数,有时候用起来不是很方便,能否在连乘积结果上再来个提示让选择小数位位数呢(通过四舍五入)?再次不胜感激
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-9-7 18:33:17 | 显示全部楼层
(defun c:test(/ en xx next th jd pt )
(setq en(entsel"\n选择要连乘的数字:"))
(setq xx(atof(getdxf en 1)))
(while (setq next(entsel"\n选择下一个数字:"))
(setq xx(* xx (atof(getdxf next 1))))
)
(setq pt(getpoint "\n文字插入点:"))
(setq th(getdist (strcat "\n字高<" (if oldth (rtos oldth 2 2) "300") ">:")))
(if (null th)
(setq th oldth)
)
(if (null th)
(setq th 300)
)
(setq oldth th)
(if (null(setq jd(getint "\n精确度<2>:")))
(setq jd 2)
)
(setvar "dimzin" 0)
(command "text" "s" "standard" pt  th 0 (rtos xx 2 jd))
(princ)
)
(defun getdxf (en dxf)
(cdr(assoc dxf (entget (car en))))
)
字体"standard"可换成自己常用的.
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-28 12:43 , Processed in 0.213189 second(s), 56 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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