标题:请教运行中的过滤要求
只看楼主
fdxxhjc
Rank: 1
等 级:新手上路
帖 子:305
专家分:0
注 册:2014-4-10
结帖率:73.44%
已结贴  问题点数:20 回复次数:10 
请教运行中的过滤要求
先生您好,我的18个js()计算下来过滤要求简单的说就是二个方面:一是这18个js的绝对值二二之间不能相等,二是这18个js的绝对值的最大值与最小值的差不能大于17,谢谢先生

请教运行中的最大最小问题.rar (1.54 KB)

搜索更多相关主题的帖子: 运行 要求 js 绝对值 大于 
2018-08-02 14:59
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:323
帖 子:9621
专家分:26174
注 册:2012-2-5
得分:20 
不明白楼主的意思
18个js()的赋值规律是什么

[此贴子已经被作者于2018-8-2 19:24编辑过]


坚守VFP最后的阵地
2018-08-02 18:58
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:323
帖 子:9621
专家分:26174
注 册:2012-2-5
得分:0 
CLEAR
SET SAFETY OFF

DIMENSION hhb(10)
DIMENSION js(18)
USE 表
select * from 表 into array hhb
n=2 &&自行修改这个值
USE 搜索表
ZAP
  FOR a=1 TO n
    FOR b=1 TO n
      FOR c=1 TO n
        FOR d=1 TO n
          FOR e=1 TO n
            FOR f=1 TO n
              FOR g=1 TO n
                FOR h=1 TO n
                  FOR i=1 TO n
                    FOR j=1 TO n
js(1)= 2+hhb(a)
js(2)= 8+hhb(b)
js(3)=6+hhb(c)
js(4)= 11+hhb(d)
js(5)= hhb(e)+hhb(f)
js(6)= 15+hhb(g)
js(7)= 12+hhb(h)
js(8)= hhb(i)+hhb(j) &&
js(9)= 11+hhb(c)
js(10)= 6+hhb(d)
js(11)= hhb(h)+hhb(i)
js(12)= 12+hhb(j)
js(13)= hhb(e)+hhb(g)
js(14)= 15+hhb(f)
js(15)= 2+hhb(b)
js(16)= 8+hhb(a)
js(17)= 15+hhb(e)
js(18)= hhb(a)+hhb(b)                    
cstr=""
FOR k=1 TO 18
    cstr=cstr+IIF(EMPTY(cstr),"",",")+TRANSFORM(js[k])
ENDFOR  
nMin=MIN(&cstr)
nMax=MAX(&cstr)
FOR p=1 TO 17
    FOR q=p+1 TO 18   
        IF ABS(js(p))=ABS(js(q)) OR nMax-nMin>=17
            EXIT
        ELSE
            APPEND BLANK
            FOR x=1 TO 18   
                 REPLACE  ('列'+TRANSFORM(x))  WITH  js(x)   
            ENDFOR               
        ENDIF
      *------              
    ENDFOR  
ENDFOR
 *---------------------------------------------------------                  
                    ENDFOR                     
                  ENDFOR   
                ENDFOR                     
              ENDFOR   
            ENDFOR                     
          ENDFOR   
        ENDFOR                     
      ENDFOR   
    ENDFOR                     
  ENDFOR           
DELETE FILE *.bak
BROWSE

坚守VFP最后的阵地
2018-08-02 19:58
fdxxhjc
Rank: 1
等 级:新手上路
帖 子:305
专家分:0
注 册:2014-4-10
得分:0 
回复 3楼 sdta
请教先生,同一行18个数中当有绝对值相等时怎么没有过滤掉,而是还写入到了“搜索表”中,谢谢
2018-08-02 22:11
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:323
帖 子:9621
专家分:26174
注 册:2012-2-5
得分:0 
是你自己没说清楚

坚守VFP最后的阵地
2018-08-02 22:28
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:323
帖 子:9621
专家分:26174
注 册:2012-2-5
得分:0 
两个条件有一个条件不符合要求,就不能加入表中,是不是这个意思啊

坚守VFP最后的阵地
2018-08-02 22:32
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:323
帖 子:9621
专家分:26174
注 册:2012-2-5
得分:0 
CLEAR
SET SAFETY OFF

DIMENSION hhb(10)
DIMENSION js(18)
USE 表
select * from 表 into array hhb
n=4 &&自行修改这个值
n1=1
USE 搜索表
ZAP
  FOR a=n1 TO n
    FOR b=n1 TO n
      FOR c=n1 TO n
        FOR d=n1 TO n
          FOR e=n1 TO n
            FOR f=n1 TO n
              FOR g=n1 TO n
                FOR h=n1 TO n
                  FOR i=n1 TO n
                    FOR j=n1 TO n
js(1)= 2+hhb(a)
js(2)= 8+hhb(b)
js(3)=6+hhb(c)
js(4)= 11+hhb(d)
js(5)= hhb(e)+hhb(f)
js(6)= 15+hhb(g)
js(7)= 12+hhb(h)
js(8)= hhb(i)+hhb(j) &&
js(9)= 11+hhb(c)
js(10)= 6+hhb(d)
js(11)= hhb(h)+hhb(i)
js(12)= 12+hhb(j)
js(13)= hhb(e)+hhb(g)
js(14)= 15+hhb(f)
js(15)= 2+hhb(b)
js(16)= 8+hhb(a)
js(17)= 15+hhb(e)
js(18)= hhb(a)+hhb(b)                    
cstr=""
ok=.F.
FOR k=1 TO 18
    cstr=cstr+IIF(EMPTY(cstr),"",",")+TRANSFORM(js[k])
ENDFOR  
nMin=MIN(&cstr)
nMax=MAX(&cstr)
cstr=""
FOR k=1 TO 18
    IF AT(PADL(js[k],2,"0"),cstr)=0
        cstr=cstr+PADL(js[k],2,"0")+" "
    ELSE
        ok=.T.
        EXIT
    ENDIF
ENDFOR  

IF ok=.F. AND nMax-nMin<=17
    APPEND BLANK
    FOR x=1 TO 18   
        REPLACE  ('列'+TRANSFORM(x))  WITH  js(x)   
    ENDFOR               
ENDIF
 *---------------------------------------------------------                  
                    ENDFOR                     
                  ENDFOR   
                ENDFOR                     
              ENDFOR   
            ENDFOR                     
          ENDFOR   
        ENDFOR                     
      ENDFOR   
    ENDFOR                     
  ENDFOR           
DELETE FILE *.bak
BROWSE

估计结果可能不多

[此贴子已经被作者于2018-8-2 23:33编辑过]


坚守VFP最后的阵地
2018-08-02 22:44
fdxxhjc
Rank: 1
等 级:新手上路
帖 子:305
专家分:0
注 册:2014-4-10
得分:0 
先生昨晚这么迟了还在为我解惑,谢谢先生。我这几行还是看不懂

IF AT(PADL(js[k],2,"0"),cstr)=0
        cstr=cstr+PADL(js[k],2,"0")+" "
    ELSE
        ok=.T.
        EXIT
    ENDIF
谢谢先生
2018-08-03 10:45
fdxxhjc
Rank: 1
等 级:新手上路
帖 子:305
专家分:0
注 册:2014-4-10
得分:0 
回复 7楼 sdta
先生昨晚这么迟了还在为我解惑,谢谢先生。我这几行还是看不懂

IF AT(PADL(js[k],2,"0"),cstr)=0
        cstr=cstr+PADL(js[k],2,"0")+" "
    ELSE
        ok=.T.
        EXIT
    ENDIF
谢谢先生
2018-08-03 10:47
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:323
帖 子:9621
专家分:26174
注 册:2012-2-5
得分:0 
数据不重复的添加到字符串中,上个问题中也这样用过。

坚守VFP最后的阵地
2018-08-03 18:58



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-488977-1-1.html




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

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