| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 6728 人关注过本帖
标题:请教怎样在多数据中快速选择出几个数值合并成一个固定的数值?
只看楼主 加入收藏
软件服务
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:3
帖 子:344
专家分:736
注 册:2011-12-23
收藏
得分:0 
不能精准,要继续努力

用你的程序在我电脑还要0.25秒误差0.02

精准不如我,但时间比我的快10倍,看来要弄个第三版
2011-12-26 14:08
panpende
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:4
帖 子:528
专家分:963
注 册:2009-4-27
收藏
得分:0 
向软件服务老师学习,我只是抛砖引玉。期待着。
收到的鲜花
  • holiwood2011-12-26 16:14 送鲜花  3朵   附言:好文章
2011-12-26 14:32
holiwood
Rank: 1
等 级:新手上路
帖 子:46
专家分:3
注 册:2007-10-3
收藏
得分:0 
以下是引用panpende在2011-12-26 12:23:08的发言:




这是我执行程序后的截图。
非常感谢panpende老师,你的小程序给了我很大启发,学习了。完全可用速度也相当快。谢谢!


[ 本帖最后由 holiwood 于 2011-12-26 19:41 编辑 ]
2011-12-26 16:12
软件服务
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:3
帖 子:344
专家分:736
注 册:2011-12-23
收藏
得分:0 
够用就好,省了
panpende老师抛砖变抛玉
2011-12-26 22:00
Moz
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2007-5-27
收藏
得分:0 
我是路过看看我什么时候注册的.
2011-12-27 01:28
panpende
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:4
帖 子:528
专家分:963
注 册:2009-4-27
收藏
得分:0 
非常希望能向软件服务老师学习,能得到软件服务老师指教。
2011-12-27 07:54
qingfameng
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:35
帖 子:964
专家分:3019
注 册:2010-2-6
收藏
得分:0 
早已知晓panpengde老师是有深功夫的!实际解决问题的能力,是真正的能力吧!
2011-12-27 18:05
panpende
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:4
帖 子:528
专家分:963
注 册:2009-4-27
收藏
得分:0 
谢谢qingfameng老师的鼓励。其实,我从qingfameng老师的帖子中,学习到很多很多,受益匪浅。
2011-12-28 07:34
Moz
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2007-5-27
收藏
得分:0 
看到高手们的讨论,确实是感觉到很惭愧.
因为我本来是准备要刁难一下楼主,说了要明年才把代码贴上来的.
代码也写了很多,但VFP对字符串的处理速度确实是有点慢.
15楼的代码也给了我好多好的提示,
比如,VFP自己的数据处理速度上的优势.
因为代码风格比较豪犷,我大概的概括了一下.
大概是先圈一堆近似值,然后计算不同加数的差距,逐渐往最小差距靠近.
速度确实是飞快,我写了几个不同方法的程序,从不能达到这样的速度,自愧不如.
即使我从各个方面给自己找了无数的借口,最后的结果还是甘败下风.
不过,我也很佩服自己服输的勇气,所以还是把自己的代码贴了上来,以供大家贻笑,顺便捞点鸡蛋番茄回家.

USE test.dbf
sum A1 to s0
N=RECCOUNT()
ss=420000
*ss=31649.22
COPY TO ARRAY Y1 FIELDS A1
=ASORT(Y1,1,-1,1)
if ss>s0 or ss<Y1(N) then
    return
endif

DIMENSION r(N)
k=1
r(k)=1
s1=Y1(r(k))
DO WHILE !(s1=ss)
   IF s1>ss THEN
      s1=s1-Y1(r(k))
      r(k)=r(k)+1
   ELSE
      k=k+1
      r(k)=r(k-1)+1
   ENDIF
   DO WHILE r(k)>N
      IF k=1 THEN
         return
      ENDIF

      k=k-1
      s1=s1-Y1(r(k))
      r(k)=r(k)+1
   ENDDO
   s1=s1+Y1(r(k))
ENDDO
   s2=STR(Y1(r(1)),10,2)
   FOR i=2 TO k
       s2=s2+"+"+STR(Y1(r(i)),10,2)
   NEXT
?STRTRAN(s2+"="+STR(EVALUATE(s2),10,2)," ","")

[ 本帖最后由 Moz 于 2012-1-1 15:22 编辑 ]
2011-12-28 19:42
Moz
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2007-5-27
收藏
得分:0 
exit 要改成 return
2011-12-28 19:50
快速回复:请教怎样在多数据中快速选择出几个数值合并成一个固定的数值?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.046266 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved