注册 登录
编程论坛 VFP论坛

如何定义6个变量,i,j,k,a,b,c中有三个除3余数为0,三个除3余数为1,零个除3余数为2的条件?

fengmh 发布于 2018-03-18 22:20, 2637 次点击
如何定义6个变量,i,j,k,a,b,c中有三个除3余数为0,三个除3余数为1,零个除3余数为2的条件;
IF MOD(i, 3)+MOD(j, 3)+MOD(k, 3)+MOD(a, 3)+MOD(b, 3)+MOD(c, 3)=3 THEN
这样表达试了不行,应该有20种组合形式
10 回复
#2
sdta2018-03-18 22:44
试试
IF MOD(i, 3)+MOD(j, 3)+MOD(k, 3)+MOD(a, 3)+MOD(b, 3)+MOD(c, 3)=3 AND NOT INLIST(2,MOD(i, 3),MOD(j, 3),MOD(k, 3),MOD(a, 3),MOD(b, 3),MOD(c, 3))
#3
fengmh2018-03-19 08:38
谢谢老师,这种方法可以,但想问有没有一种通用的写法,能否用统计这6个变量除3余数等于0的个数、1的个数、2的个数?
又如果i,j,k,a,b,c中有二个除3余数为0,一个除3余数为1,三个除3余数为2的条件该怎么写呢?
#4
mywisdom882018-03-19 09:11
相当于下面的原理,然后做成1个函数,
dimension xy[6]
local x0,x1,x2
xy[1]=0
xy[2]=0
xy[3]=1
xy[4]=1
xy[5]=2
xy[6]=1
x0=2
x1=2
x2=2
* 上面的是函数的参数

local i,n0,n1,n2,r0
n0=0
n1=0
n2=0
r0=0
for i=1 to 6
    if xy[i]=x0
       n0=n0+1
       if n0>x0
          r0=1
          exit
       endif
    endif
    if xy[i]=x1
       n1=n1+1
       if n1>x1
          r0=1
          exit
       endif
    endif
    if xy[i]=x2
       n2=n2+1
       if n2>x2
          r0=1
          exit
       endif
    endif
endfor
* BOX的值,就是返回值,.f.就不行,.t.就可以
messagebox(IIF(r0=0,(n0=x0 and n1=x1 and n2=x2),.f.))

#5
fengmh2018-03-19 11:32
回复 4楼 mywisdom88
想要一个通用简短的写法,或者换个条件,6个变量i,j,k,a,b,c中,小于4的个数为1,大于3且小于7的个数为2,大于6的个数为3,又应该怎么写呢?
#6
mywisdom882018-03-19 12:37
把他封装为函数,就简短了...
本来就是复杂的问题,怎么能简短呢,区别是1个是自定义函数,1个是系统函数...
#7
中国龙王2018-03-19 21:15
搞不懂。总个才六个数。你还要0个除3余2是什么意思……。
#8
fengmh2018-03-20 00:14
不能countif这6个变量?像在excell中选择区域,找符合某条件的个数吗?
#9
丁春秋yxp2018-03-20 15:07
“除”和“除以”好象是有区别的啊!
#10
丁春秋yxp2018-03-20 15:07
“除”和“除以”好象是有区别的啊!
#11
fengmh2018-03-20 16:08
回复 10楼 丁春秋yxp
用mod函数就对了,这不是重点。
想问countif函数怎么在程序中用?
1