注册 登录
编程论坛 VFP论坛

求助一组数据出现的频率

atsnow 发布于 2021-08-23 21:15, 1807 次点击
求助:谢谢
有10组三位数:
125
256
358
268
584
812
936
765
491
052
表1每小时更新一组随机四位数,与上述10组数对比,只要包含三位数,不管顺序,标记为真!谢谢
如:表1
time          sjhm     jud
8:00       3278     F
9:00       1025     T
10:00     2108     F
11:00     0032     F
12:00     0936     T
13:00     1049     T
14:00     3066     F
14 回复
#2
吹水佬2021-08-23 22:30
10:00     2108     F
2108 与 812 不是符合要求吗
#3
吹水佬2021-08-23 23:52
用减法
#4
atsnow2021-08-24 06:26
回复 2楼 吹水佬
对,符合,我写错了

10:00     2108     T
#5
wengjl2021-08-24 08:06
把被检测的数值转为字符型
以个第一个125为例
xx='125'
sn=0
for i=1 to 3
  zf=subs(xx,i,1)  
  if zf$allt(str(被检测的4位数值))
    sn=sn+1
  endif
endfor
if sn=3
  ? xx+'  结果为 真'  
endif
需要一次完成,多加几个循环就可以了
#6
s484065032021-08-24 08:19
厉害啊厉害
#7
吹水佬2021-08-24 09:42
只有本站会员才能查看附件,请 登录

程序代码:
ALINES(ahm, "125,256,358,268,584,812,936,765,491,052", ",")
?? fun("3278")
?? fun("1025")
?? fun("2108")
?? fun("0032")
?? fun("0936")
?? fun("1049")
?? fun("3066")

FUNCTION fun(sjhm)
    ? sjhm," "
    FOR i=1 TO ALEN(ahm)
        IF EMPTY(CHRTRAN(ahm[i],sjhm,""))
            RETURN .T.
        ENDIF
    ENDFOR
    RETURN .F.
ENDFUNC
#8
xuminxz2021-08-24 09:43
回复 楼主 atsnow
3位数中不会出现重复(例如:122)的吗?
#9
atsnow2021-08-24 10:17
3位不会有重复
表1是每小时更新,记录不断增加,每条记录都要判断一次真假!

[此贴子已经被作者于2021-8-24 10:22编辑过]

#10
atsnow2021-08-24 10:24
回复 7楼 吹水佬
大哥,判断四位数要到表1查找,上万条记录不能都写程序里呀,谢谢您😀
#11
xuminxz2021-08-24 10:43
回复 10楼 atsnow
从你的表1取数据啊,而且不用对所有数据比较吧。
sele * from  表1 where time>=时间 into cursor tb1
#12
吹水佬2021-08-24 10:49
以下是引用atsnow在2021-8-24 10:24:57的发言:

大哥,判断四位数要到表1查找,上万条记录不能都写程序里呀,谢谢您😀

兄弟,只见几个数据,主要是谈思路,点到即止。
要较真就拿点真数据来看看
#13
吹水佬2021-08-24 10:58
以下是引用atsnow在2021-8-24 10:17:48的发言:

3位不会有重复
表1是每小时更新,记录不断增加,每条记录都要判断一次真假!

以下是引用atsnow在2021-8-24 10:24:57的发言:

大哥,判断四位数要到表1查找,上万条记录不能都写程序里呀,谢谢您😀


如果是每隔1小时增加一条记录,增加记录时就可以确定真假,这与“上万条记录”关系不大吧。
#14
atsnow2021-08-25 07:26
回复 13楼 吹水佬
对对,增加一条就判断真假,谢谢您了👍🏻👍🏻
#15
atsnow2021-08-30 10:44
回复 5楼 wengjl
请教下,我怎么循环不起来?只判断了一条记录?!😅

use  表1
if eof()
xx='125'
sn=0
for i=1 to 3
  zf=subs(xx,i,1)  
  if zf$allt(sjhm)
    sn=sn+1
  endif
endfor
if sn=3
repl  jud with .T.
*  ? xx+'  结果为 真'  
skip
endif
endif
1