回 帖 发 新 帖 刷新版面

主题:求一组数据中相同值的个数

求两组数据中相同值的数量!比如1,2,3,4,11和1,3,4,11,12,13,18等用qb怎么解决呀?

回复列表 (共8个回复)

沙发

OPEN"s1.txt" FOR INPUT AS #1
OPEN"s2.txt" FOR INPUT AS #2
CLS
DIM s(32000) AS INTEGER:k=0
DO WHILE NOT(EOF(1))
   INPUT #1,n
   s(n)=1
LOOP
DO WHILE NOT(EOF(2))
   INPUT #2,n
   IF s(n)=1 THEN k=k+1
LOOP
PRINT k
END
这种方法最省时间,但是占空间大。如果是用C或PASCAL的话直接用布尔型的数组,一个元素只占一字节,可整型数组的一个元素占二字节,并且如果数据中有超过32000的数就没办法了。

板凳

这也许是QB的缺点。

3 楼

嘿嘿,嘿嘿.

4 楼

非常感谢moz!
我是个初学者!老师的指点够我消化一阵了。

5 楼

呵呵,你感谢错对象了。

6 楼

我只是不知道楼主的要求是不是只是[color=ff00ff]个数[/color]
而Mato嘛,呵呵,的确很快。其实数组的范围是 -32768 to 32767

declare function sames%(x$,y$)
declare sub delspc(a$)
print sames("1,2,3,4,11","1,3,4,11,12,13")

sub delspc(a$)
for i%=1 to len(a$)
    if mid$(a$,i%,1)=" " then mid$(a$,i%)=mid$(a$,i%+1)+" "
next
a$=ltrim$(rtrim$(a$))
if left$(a$,1)<>"," then a$=","+a$
if right$(a$,1)<>"," then a$=a$+","
end sub

function sames(x$,y$)
delspc x$
delspc y$
i%=2
do while i%>1
   j%=instr(i%,x$,",")
   if j%>0 then
      z$=mid$(x$,i%-1,j%-i%+1)
      if instr(y$,z$)>0 then s=s+1
   end if
   i%=j%+1
loop
sames=s
end function

7 楼

呵呵,看我糊涂的!对不住“Mato完整版”哈!

8 楼

其实我是Matodied,
不过前段时间把密码弄丢了,现在我正在向总版主要回密码。

我来回复

您尚未登录,请登录后再回复。点此登录或注册