作者KentII (go let it out...)
看板Visual_Basic
标题[VB6 ] 回圈计次的问题...
时间Mon Oct 3 23:54:33 2005
假设,我有一个txt档内容为:
docid word
------------------
1 aa
1 cc
1 aa
1 bb
1 jj
1 aa
1 ee
1 bb
1 pp
1 5y
2 aa
2 xx
2 aa
2 bb
2 kk
2 jj
2 jj
2 op
2 df
2 4t
我想要求出每个字的A.B值,并且列印在旁边,
A值=word在该文章中的次数,ex:aa在docid=1里的A值=3,在docid=2时为2
B值=word出现的文章数,ex:aa在docid=1、docid=2的B值都为2
也就是我想要变成一个txt档为:
docid word A B
-----------------------------------
1 aa 3 2
1 cc 1 1
1 aa 3 2
1 bb 2 2
1 jj 1 2
1 aa 3 2
1 ee 1 1
1 bb 2 2
1 pp 1 1
1 5y 1 1
2 aa 2 2
2 xx 1 1
2 aa 2 2
2 bb 1 2
2 kk 1 1
2 jj 2 2
2 jj 2 2
2 op 1 1
2 df 1 1
2 4t 1 1
我的做法是将docid、word分成两个档,然後在存到不同的array
Dim docid(100000), word(100000)
Open App.Path & "\docid.txt" For Input As #1
i = 1
Do Until EOF(1)
Input #1, docid(i)
i = i + 1
Loop
Close #1
Open App.Path & "\word.txt" For Input As #2
i = 1
Do Until EOF(2)
Input #2, word(i)
i = i + 1
arrlen = i
Loop
Close #2
F = FreeFile
Open App.Path & "\AB.txt" For Output As #F
For i = 1 To arrlen - 1
A = 0
B = 0
For j = 1 To arrlen - 1
If word(i) = word(j) And docid(i) = docid(j) Then
A = A + 1
End If
If word(i) = word(j) And docid(i) <> docid(j) Then--->"错了"
B = B + 1
End If
Next j
Print #F, word(i), A, B
Next i
Close #F
-----------------------------------------------------------------
结果A值可以算出来,但是B值就会出错(我知道逻辑哪里错了)
但是我就是不知道要怎样写才可以完成B值的算法,明明看似
很简单,就是算有出现某word的doc而已,但我就是想不出来。
希望高手帮我解个谜,谢谢。
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 218.34.68.202