| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2947 人关注过本帖, 1 人收藏
标题:请大神帮忙写张表格,就是将总数量为28的两个元素的所有排列与组合都写进表 ...
取消只看楼主 加入收藏
shuxin211
Rank: 1
等 级:新手上路
帖 子:33
专家分:0
注 册:2015-8-26
收藏
得分:0 
以下是引用sdta在2015-8-27 16:15:40的发言:

这个代码,在VFP6与VFP9下运行结果正常,都是16777216条记录

所以说新人伤不起啊,自学的路上莫名奇妙的羁绊太多,这种说不清情况的问题,你们这些大神也是爱莫能助,多谢S版,我再琢磨琢磨。
2015-08-27 16:28
shuxin211
Rank: 1
等 级:新手上路
帖 子:33
专家分:0
注 册:2015-8-26
收藏
得分:0 
以下是引用吹水佬在2015-8-27 16:48:02的发言:


如果我的意思符合要求,那就有可能变得简单多了。
如:一个3位数值可表示B(0)与P(1)的8种组合,可以用1,2,3......7来表示,VFP也提供数值位操作函数BIT..()。
000  0
001  1
010  2
011  3
100  4
101  5
110  6
111  7

用S版主的代码反复试了好几次,项目全部清除又重建,还是只能建张空表,不知道是不是我的软件有问题,崩溃中,吹水版主这个方案能不能帮忙写个完整的代码?多谢了。BP用01代替这个在后面涉及到的计算当中转换应该并不难。
2015-08-27 18:26
shuxin211
Rank: 1
等 级:新手上路
帖 子:33
专家分:0
注 册:2015-8-26
收藏
得分:0 
以下是引用吹水佬在2015-8-27 19:49:52的发言:

3位的数值有0--7种组合,28位的数值有多少种组合0--?这个已经是明摆着的。
至于某个组合的数值转换为BP组合,用BIT...()之类的函数可以取得各位是0(B)还是1(P),。
用3位的数值有0--7种组合为例:
n位数 = 3
FOR k=0 TO 7
    n数值 = k
    ?
    FOR i = 0 TO n位数-1
        bp = BITRSHIFT(BITLSHIFT(n数值, 32 - n位数 + i), 31)
        ?? IIF(bp==0, "B", "P")
    ENDFOR
ENDFOR

多谢版主,这个代码完全看不懂,执行命令提示嵌套错误,这鸟玩意这么难学。
2015-08-27 21:07
shuxin211
Rank: 1
等 级:新手上路
帖 子:33
专家分:0
注 册:2015-8-26
收藏
得分:0 
以下是引用sdta在2015-8-27 02:22:25的发言:

你用的可能是VFP6,直接用下面代码吧

CREATE CURSOR t1 (a1 c(1))
INSERT INTO t1 VALUES ("B")
INSERT INTO t1 VALUES ("P")
SELECT aa.a1 bp1,bb.a1 bp2,cc.a1 bp3,dd.a1 bp4,ee.a1 bp5,ff.a1 bp6,gg.a1 bp7,hh.a1 bp8,ii.a1 bp9,jj.a1 bp10,kk.a1 bp11,ll.a1 bp12,mm.a1 bp13,nn.a1 bp14,oo.a1 bp15,pp.a1 bp16,qq.a1 bp17,rr.a1 bp18,ss.a1 bp19,tt.a1 bp20,uu.a1 bq21,vv.a1 bp22,ww.a1 bp23,xx.a1 bp24 FROM t1 aa,t1 bb,t1 cc,t1 dd,t1 ee,t1 ff,t1 gg,t1 hh,t1 ii,t1 jj,t1 kk,t1 ll,t1 mm,t1 nn,t1 oo,t1 pp,t1 qq,t1 rr,t1 ss,t1 tt,t1 uu,t1 vv,t1 ww,t1 xx

请问S版,执行这段代码之前除了新建一张以t1命名,字段1=a1的表之外还需要做什么准备工作吗?搞了一天这个代码都搞不定,我电脑是win8.1系统,难道是少了什么支持的玩意?但是又并没有报错啊,VFP是9.0sp2的,我仔细检查了安装包,跟论坛提供下载的安装包是一模一样的,都是王苏汉化的版本。在excel里很容易实现的东西在这里怎么就这么难,搞的人恼火。
2015-08-27 22:41
shuxin211
Rank: 1
等 级:新手上路
帖 子:33
专家分:0
注 册:2015-8-26
收藏
得分:0 
以下是引用吹水佬在2015-8-27 22:37:10的发言:


就几行代码两个按位左移右移函数,不难读懂吧?

不知道在执行你这个代码之前需要先做什么准备工作吗?我是刚由excel转学这个,看不懂代码也正常吧,关键是执行代码的时候提示嵌套错误,我把那几处汉字去掉再执行,也还是提示嵌套错误。
2015-08-27 23:00
shuxin211
Rank: 1
等 级:新手上路
帖 子:33
专家分:0
注 册:2015-8-26
收藏
得分:0 
以下是引用吹水佬在2015-8-27 23:02:09的发言:

列了一下28位的前10组数值(0...9)对应的BP表,看看是否所要的结果,不是的话就白搭了。

用28位的话一张表恐怕写不下吧?总共有268435456条记录就不会错,能写下就更好,写不下的话就用26位好了,总共67108864条记录就不会错,多谢了。
2015-08-27 23:11
shuxin211
Rank: 1
等 级:新手上路
帖 子:33
专家分:0
注 册:2015-8-26
收藏
得分:0 
以下是引用吹水佬在2015-8-27 23:09:30的发言:

这个是28位的最后10组数值对应的BP表

没错,是对的,太感谢了。
2015-08-27 23:15
shuxin211
Rank: 1
等 级:新手上路
帖 子:33
专家分:0
注 册:2015-8-26
收藏
得分:0 
CLEAR
SET TALK OFF
n位数 = 28
FOR k=0 TO 268435455
    n数值 = k
    ? k, "…"
    FOR i = 0 TO n位数-1
        bp = BITRSHIFT(BITLSHIFT(n数值, 32 - n位数 + i), 31)
        ?? " " + (bp==0, "B", "P")
    ENDFOR
ENDFOR

执行以上代码,还是TMD嵌套错误,日了狗了,看来不是我的系统有问题就是我的VFP9.0有问题了。
2015-08-27 23:27
shuxin211
Rank: 1
等 级:新手上路
帖 子:33
专家分:0
注 册:2015-8-26
收藏
得分:0 
以下是引用吹水佬在2015-8-27 23:42:02的发言:

只是一个示例代码。
无需 FOR k=0 TO 268435455
这样太浪费时间,用?列示无实际意义。
实际应用可按需要完善代码。

我需要列出这268435456行全部的记录啊,因为下一步的计算这每一行都会参与其中,打比方说,我的k线涨了10点用B表示,我另外的记录表里面会输入这个B,然后我需要拿这268435456行每一行的第一个字段的值与之对比,如果是一样的,会执行下一个命令,如果不一样又会执行下一个不一样的命令。不知道说清楚没有,呵呵。
2015-08-28 00:00
shuxin211
Rank: 1
等 级:新手上路
帖 子:33
专家分:0
注 册:2015-8-26
收藏
得分:0 
以下是引用sdta在2015-8-27 16:00:28的发言:

贴上你的代码

S版,刚才又试了下,发现代码放进命令框按下确定之后,代码只剩下最后一行,难怪只是查询到一张空表,问题是上面的三句代码为什么不执行并且在命令框里消失了呢?
SELECT aa.a1 bp1,bb.a1 bp2,cc.a1 bp3,dd.a1 bp4,ee.a1 bp5,ff.a1 bp6,gg.a1 bp7,hh.a1 bp8,ii.a1 bp9,jj.a1 bp10,kk.a1 bp11,ll.a1 bp12,mm.a1 bp13,nn.a1 bp14,oo.a1 bp15,pp.a1 bp16,qq.a1 bp17,rr.a1 bp18,ss.a1 bp19,tt.a1 bp20,uu.a1 bq21,vv.a1 bp22,ww.a1 bp23,xx.a1 bp24 FROM t1 aa,t1 bb,t1 cc,t1 dd,t1 ee,t1 ff,t1 gg,t1 hh,t1 ii,t1 jj,t1 kk,t1 ll,t1 mm,t1 nn,t1 oo,t1 pp,t1 qq,t1 rr,t1 ss,t1 tt,t1 uu,t1 vv,t1 ww,t1 xx
2015-08-28 16:28
快速回复:请大神帮忙写张表格,就是将总数量为28的两个元素的所有排列与组合都写 ...
数据加载中...
 
   



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

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