[VB6 ] 迴圈計次的問題...
看板Visual_Basic作者KentII (go let it out...)時間20年前 (2005/10/03 23:33)推噓0(0推 0噓 0→)留言0則, 0人參與討論串1/2 (看更多)
      假設,我有一個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
討論串 (同標題文章)
以下文章回應了本文:
完整討論串 (本文為第 1 之 2 篇):
Visual_Basic 近期熱門文章
PTT數位生活區 即時熱門文章