| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1627 人关注过本帖, 1 人收藏
标题:请教只将符合条件的写入到指定文件
只看楼主 加入收藏
fdxxhjc
Rank: 1
等 级:新手上路
帖 子:305
专家分:0
注 册:2014-4-10
收藏
得分:0 
回复 20楼 吹水佬
有重复时返回到本级循环(不写入),重新搜索,等到无重复才写入并继续循环搜索(我这句“返回到本级循环”不知用词是否正确)

[ 本帖最后由 fdxxhjc 于 2015-5-25 14:16 编辑 ]
2015-05-25 14:10
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10607
专家分:43186
注 册:2014-5-20
收藏
得分:0 
以下是引用fdxxhjc在2015-5-25 14:10:51的发言:

有重复时返回到本级循环(不写入),重新搜索,等到无重复才写入并继续循环搜索(我这句“返回到本级循环”不知用词是否正确)

就是,你的代码有重复时没有LOOP。
2015-05-25 14:57
fdxxhjc
Rank: 1
等 级:新手上路
帖 子:305
专家分:0
注 册:2014-4-10
收藏
得分:0 
以下是引用吹水佬在2015-5-25 14:57:05的发言:

 
就是,你的代码有重复时没有LOOP。
我在这里加了loop
if i < 12
   ** 有重复
  loop  &&--刚加上
endif     

加上后现在又在运行中,等会看运行后的结果,谢谢先生  
2015-05-25 15:10
hgfeng1984
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:5
帖 子:139
专家分:513
注 册:2006-3-26
收藏
得分:0 
貌似只有64行结果?
图片附件: 游客没有浏览图片的权限,请 登录注册
2015-05-25 15:30
fdxxhjc
Rank: 1
等 级:新手上路
帖 子:305
专家分:0
注 册:2014-4-10
收藏
得分:0 
以下是引用hgfeng1984在2015-5-25 15:30:53的发言:

貌似只有64行结果?
请教先生我怎么还在运行中,请问您是如何计算出来的
2015-05-25 17:10
hgfeng1984
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:5
帖 子:139
专家分:513
注 册:2006-3-26
收藏
得分:0 
分两步;
取得1~12,3个数字,4个数字,5个数字,和分别为26的组合。
3组组合再组合,过滤有重复数字的。
以前有写过1~45取6次的组合,一样的道理。但是不知道有没有漏掉的。
程序代码:
CLEAR ALL
SET SAFETY off
CREATE TABLE tmp(sz n)
INSERT INTO tmp(sz) VALUES (1)
INSERT INTO tmp(sz) VALUES (2)
INSERT INTO tmp(sz) VALUES (3)
INSERT INTO tmp(sz) VALUES (4)
INSERT INTO tmp(sz) VALUES (5)
INSERT INTO tmp(sz) VALUES (6)
INSERT INTO tmp(sz) VALUES (7)
INSERT INTO tmp(sz) VALUES (8)
INSERT INTO tmp(sz) VALUES (9)
INSERT INTO tmp(sz) VALUES (10)
INSERT INTO tmp(sz) VALUES (11)
INSERT INTO tmp(sz) VALUES (12)


&&获取组合
SELECT a.sz as sz1,b.sz as sz2,c.sz as sz3 FROM tmp a INNER JOIN tmp b ON a.sz<b.sz INNER JOIN tmp c ON b.sz<c.sz WHERE a.sz+b.sz+c.sz=26 INTO CURSOR AAA

SELECT a.sz as sz4,b.sz as sz5,c.sz as sz6,d.sz as sz7 FROM tmp a INNER JOIN tmp b ON a.sz<b.sz INNER JOIN tmp c ON b.sz<c.sz INNER JOIN tmp d ON c.sz<d.sz WHERE a.sz+b.sz+c.sz+d.sz=26 INTO CURSOR BBB

SELECT a.sz as sz8,b.sz as sz9,c.sz as sz10,d.sz as sz11,e.sz as sz12 FROM tmp a INNER JOIN tmp b ON a.sz<b.sz INNER JOIN tmp c ON b.sz<c.sz INNER JOIN tmp d ON c.sz<d.sz INNER JOIN tmp e ON d.sz<e.sz WHERE a.sz+b.sz+c.sz+d.sz+e.sz=26 INTO CURSOR CCC

SELECT RECNO() as xh,* FROM (SELECT * FROM aaa,bbb,ccc)a INTO CURSOR ttt

&&过滤
SELECT xh from(;
SELECT xh,sz1 as sz FROM ttt;
union all;
SELECT xh,sz2 as sz FROM ttt;
union all;
SELECT xh,sz3 as sz FROM ttt;
union all;
SELECT xh,sz4 as sz FROM ttt;
union all;
SELECT xh,sz5 as sz FROM ttt;
union all;
SELECT xh,sz6 as sz FROM ttt;
union all;
SELECT xh,sz7 as sz FROM ttt;
union all;
SELECT xh,sz8 as sz FROM ttt;
union all;
SELECT xh,sz9 as sz FROM ttt;
union all;
SELECT xh,sz10 as sz FROM ttt;
union all;
SELECT xh,sz11 as sz FROM ttt;
union all;
SELECT xh,sz12 as sz FROM ttt)a GROUP BY xh,sz HAVING COUNT(*)>=2 INTO CURSOR zzz

SELECT sz1,sz2,sz3,sz4,sz5,sz6,sz7,sz8,sz9,sz10,sz11,sz12 FROM ttt a WHERE a.xh NOT in(SELECT xh FROM zzz)

2015-05-25 17:25
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:191
帖 子:3147
专家分:8408
注 册:2015-3-25
收藏
得分:0 
CLOSE DATABASES
SET DELETED ON

CREATE TABLE a3.dbf (ax n(2),ay n(2),az n(2),aa n(3))

clear
FOR i=1 TO 12
    x=i
    FOR j=1 TO 12
        IF j=i
           LOOP
        ELSE
           y=j
        ENDIF
        FOR k=1 TO 12
            IF k=i OR k=j
               LOOP
            ELSE
               z=k
            ENDIF
        IF x+y+z=26
        INSERT INTO a3(ax,ay,az) values(x,y,z)
        endif
        ENDFOR
      ENDFOR
 ENDFOR
DIMENSION ai(3),aj(3)
FOR i=1 TO RECCOUNT()
   GO i
   ai(1)=ax
   ai(2)=ay
   ai(3)=az
   =ASORT(ai)
   FOR j=i+1 TO  RECCOUNT()
       GO j
       aj(1)=ax
       aj(2)=ay
       aj(3)=az
       =ASORT(aj)
       IF ai(1)=aj(1) AND ai(2)=aj(2) AND ai(3)=aj(3)
          REPLACE aa WITH i
       ENDIF
   ENDFOR
ENDFOR
DELETE FOR aa>0
brow
2015-05-25 17:37
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:191
帖 子:3147
专家分:8408
注 册:2015-3-25
收藏
得分:0 
这样处理后,A3的表就只有8个记录,另外2个段,也可以用通用的方法,先处理,然后再连接起来
2015-05-25 17:39
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:191
帖 子:3147
专家分:8408
注 册:2015-3-25
收藏
得分:0 
以下是引用hgfeng1984在2015-5-25 17:25:56的发言:

分两步;
取得1~12,3个数字,4个数字,5个数字,和分别为26的组合。
3组组合再组合,过滤有重复数字的。
以前有写过1~45取6次的组合,一样的道理。但是不知道有没有漏掉的。
CLEAR ALL
SET SAFETY off
CREATE TABLE tmp(sz n)
INSERT INTO tmp(sz) VALUES (1)
INSERT INTO tmp(sz) VALUES (2)
INSERT INTO tmp(sz) VALUES (3)
INSERT INTO tmp(sz) VALUES (4)
INSERT INTO tmp(sz) VALUES (5)
INSERT INTO tmp(sz) VALUES (6)
INSERT INTO tmp(sz) VALUES (7)
INSERT INTO tmp(sz) VALUES (8)
INSERT INTO tmp(sz) VALUES (9)
INSERT INTO tmp(sz) VALUES (10)
INSERT INTO tmp(sz) VALUES (11)
INSERT INTO tmp(sz) VALUES (12)
 
 
&&获取组合
SELECT a.sz as sz1,b.sz as sz2,c.sz as sz3 FROM tmp a INNER JOIN tmp b ON a.sz
会SQL真牛,几个话,就出来了。。
2015-05-25 17:44
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:191
帖 子:3147
专家分:8408
注 册:2015-3-25
收藏
得分:0 
SELECT a.sz as sz1,b.sz as sz2,c.sz as sz3 FROM tmp a INNER JOIN tmp b ON a.sz<b.sz INNER JOIN tmp c ON b.sz<c.sz WHERE a.sz+b.sz+c.sz=26 INTO CURSOR AAA
能解析下,这个工作原理吗?
2015-05-25 17:48
快速回复:请教只将符合条件的写入到指定文件
数据加载中...
 
   



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

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