明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 11867|回复: 54

数字按规律求和

  [复制链接]
发表于 2012-9-19 23:17:57 | 显示全部楼层 |阅读模式
1明经币
本帖最后由 zhengchuan 于 2012-9-22 15:08 编辑

图上框选一堆数字,自己指定将最大值赋予A,还是B,还是C。假设将最大的数字改成A,第二大数字改成B,第三大数字改成C。第四大的数字改成C,第五大的数字改成B,第六大数字改成A。判断此时A、B、C的和。和是最小的(比如B),将剩下的最大数字改成B。和是第二小的(比如C),将剩下的最二大数字改成C。再将剩下的最二大数字改成A。再判断此时A,B,C的和。以此类推,直到最后一个数字。在屏幕上点选位置,写出A的和=?,B的和=?,C的和=?。
举例:
假设有5  6  7  7.5  8.5  9.3  8.2  6.7  4.5  3.3十个个数字,框选后,指定最大值赋予A。将9.3改成A,8.5改成B,8.2改成C。再将7.5改成C,7改成B,6.7改成A。此时A的和为9.3+6.7=16,B的和为8.5+7=15.5,C的和为8.2+7.5=15.7。此时A>C>B。再将6改成B,5改成C,4.5改成A。此时A的和为16+4.5=20.5,B的和为15.5+6=21.5,C的和为15.7+5=20.7。此时B>C>A。在将最后一个数字3.3改成A。最后所有的A相加的和为23.8,所有的B相加的和为21.5,所有的C相加的和为20.7。在屏幕上写出
A的和=23.8
B的和=21.5
C的和=20.7
补充:如和有相等的情况,任判断随大随小
悬赏改成100明经币

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

最佳答案

查看完整内容

我对vl-sort-i函数理解有误所致,已修改,重新上传。
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2012-9-19 23:17:58 | 显示全部楼层
本帖最后由 zml84 于 2012-9-26 14:36 编辑
zhengchuan 发表于 2012-9-26 12:54

好像程序的计算方法不太对啊。是要ABC尽量相等,且差要最小。
附上测试图,请抽空给看看。


我对vl-sort-i函数理解有误所致,已修改,重新上传。

本帖子中包含更多资源

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

x

评分

参与人数 2明经币 +2 金钱 +5 收起 理由
伪书虫86 + 5 太给力了,一直想实现的功能,没想到已有现.
sscylh + 2 热心的zml84!

查看全部评分

回复

使用道具 举报

发表于 2012-9-20 08:16:26 | 显示全部楼层
用途是啥?

...假设将最大的数字改成A...
第一輪  假设将最大的数字改成B
又會是如何安排賦值對映!
回复

使用道具 举报

发表于 2012-9-20 09:02:41 | 显示全部楼层
Andyhon 发表于 2012-9-20 08:16
用途是啥?

...假设将最大的数字改成A...

估计他是用扩展数据来将一个TEXT扩展为A的吧
回复

使用道具 举报

发表于 2012-9-20 09:05:50 | 显示全部楼层
楼主应把程序分支写一下,假设将最大的数字改成A,除了这个肯定还有假设将最大的数字改成B,假设将最大的数字改成C这样的问题
回复

使用道具 举报

发表于 2012-9-20 10:34:36 | 显示全部楼层
描述的很费劲,实际上不就是一组数组合取平均么!
参见帖子
http://bbs.mjtd.com/thread-84740-1-1.html
7楼回复!
回复

使用道具 举报

 楼主| 发表于 2012-9-20 13:20:35 | 显示全部楼层
本帖最后由 zhengchuan 于 2012-9-20 13:37 编辑

这个程序主要是将配电箱的各回路单相电流求出后,将电流值尽量平均分配到ABC相。尽量使得ABC相的电流值最接近。
因为还要使得很多个配电箱总的ABC的值尽量接近,所以计算每个配电箱时想要先指定ABC中,所以想先指定最大值是给ABC中的哪一个。
我的想法是将这些电流值单独COPY一下,再使用程序,按ABC循环,将数字改成ABC,同时可以显示所有A,所有B,所有C的和。
因为ABC的和还要和前面的比较,所以最好所求和之后能指定ABC的和的大小排序,再由程序修改ABC,最后显示所有A,所有B,所有C的和。如果不好实现就算啦,人工改啦。
GU_xl版主给的帖子看啦,描述的和我的意思差不多。但您那个程序怎么使用啊。我试的调用了下,显示参数太少。

回复

使用道具 举报

 楼主| 发表于 2012-9-21 01:07:04 | 显示全部楼层
G版,能做出这个程序吗?这个对提高工作效率太有用啦
回复

使用道具 举报

发表于 2012-9-21 14:47:26 | 显示全部楼层
试试看,是否你要的
  1. (setq lst '(5  6  7  7.5  8.5  9.3  8.2  6.7  4.5  3.3))
  2. (test lst)
  3. (defun test(lst / n lst1 m s sa sb sc)
  4.   (defun lst_sort(lst fun);表从小到大排序
  5.   (mapcar 'cdr (vl-sort (mapcar '(lambda(x) (cons 1 x)) lst) fun))
  6.   )
  7.   (setq n (length lst))
  8.   (cond ((= (rem n 3) 0))
  9.         ((= (rem n 3) 1) (setq lst (cons 0 (cons 0 lst))))
  10.         ((= (rem n 3) 2) (setq lst (cons 0 lst)))
  11.         )
  12.   (setq lst1 (lst_sort lst '(lambda(e1 e2) (> (cdr e1) (cdr e2)))) m (length lst1))
  13.   (setq s (list (cons 1 0) (cons 2 0) (cons 3 0)))
  14.   (repeat (/ m 3)
  15.   (setq SA (car lst1) SB (cadr lst1) SC (caddr lst1) lst1 (cdddr lst1))
  16.   (setq s (vl-sort s '(lambda(e1 e2) (< (cdr e1) (cdr e2)))))
  17.   (setq s (mapcar '(lambda(x y) (setq y (cons (car y) (+ x (cdr y))))) (list sa sb sc) s))
  18.   )
  19.   (setq s (vl-sort s '(lambda(e1 e2) (< (car e1) (car e2)))))
  20.   (princ (strcat "\nA=" (rtos (cdar s))))
  21.   (princ (strcat "\nB=" (rtos (cdadr s))))
  22.   (princ (strcat "\nC=" (rtos (cdar (cddr s)))))
  23.   )
回复

使用道具 举报

 楼主| 发表于 2012-9-21 20:26:51 | 显示全部楼层
byghbcx 发表于 2012-9-21 14:47
试试看,是否你要的

1)您这个程序在CAD里如何使用啊,我是只大菜鸟。直接加载出现no function definition: TEST
2)5  6  7  7.5  8.5  9.3  8.2  6.7  4.5  3.3这几个数只是我举得例子。实际中应该是我框选一堆数字,替换成A,B,C再得出A,B,C的和

点评

...框选一堆数字... 那就图上有喽,建议楼主提足调试用的样本空间,泰半的人不会花精力去猜底!  发表于 2012-9-21 20:59
回复

使用道具 举报

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

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2025-5-24 09:26 , Processed in 0.276910 second(s), 31 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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