作者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