內容 :
從機器中,不斷地出現4個英文字母的單字,現在要你抄寫下來,
倘若這個單字已經出現過,則會使用編號上的號碼直接書寫
倘若這個單字沒有出現過,則會賦予單字一個新的號碼
每組新的測資,代表不同事件,請勿將其納入新的號碼
倘若這個單字已經出現過,則會使用編號上的號碼直接書寫
倘若這個單字沒有出現過,則會賦予單字一個新的號碼
每組新的測資,代表不同事件,請勿將其納入新的號碼
輸入說明 :
每組輸入的第一行 , 有一個數字 N (1≦N≦105),接下來會有瘋狂科學家講出的N行單字,每行由小寫字母a到z所構成的4字單字.
輸出說明 :
若這個字串之前已經出現過,則輸出號碼,若沒有則輸出它將被編寫的號碼.
範例輸入 :
5 eine isis zwei drei zwei
範例輸出 :
New! 1 New! 2 New! 3 New! 4 Old! 3
貼文 BY 阿揚
作者已經移除這則留言。
回覆刪除作者已經移除這則留言。
回覆刪除Public Sub Form_Load()
回覆刪除Me.Hide
Open App.Path & "\in.txt" For Input As #1
Open App.Path & "\out.txt" For Output As #2
Input #1, s
Input #1, x
step = Split(x)
For i = 1 To s
List1.AddItem step(i - 1)
If check(i - 1, step(i - 1), p) = True Then
Print #2, "old!", p
Else
k = k + 1
Print #2, "new!", k
End If
Next i
End
Close #2
Close #1
End Sub
Public Function check(x, dat, p) As Boolean
check = False
For i = 1 To x - 1
If List1.List(i - 1) = dat Then p = i: check = True: Exit Function
Next i
End Function
只有這個帳號可以貼= =
ID 也不能換說@@
回覆刪除1。先不管它吧,只有一個帳號可以貼,就先這樣子吧。那不是我們的重點工作。
回覆刪除2。這題還是原先用陣列單純些。
但是,當作練習「function」及「list」就還可以啦。
3。繼續用這樣方式。
阿揚和小白,你們各別找題目貼上去之後,另一個也要寫一寫哦。當然,若對方有錯,也可以試著提出來,就算說錯了,也是個嘗試哦。再修正就好了。
熊掌
Dim strX
回覆刪除Private Sub Form_Load()
Me.Hide
Open App.Path & "\in.txt" For Input As #1
Open App.Path & "\out.txt" For Output As #2
Line Input #1, strQ
A = Split(strQ)
ReDim st(A(0)) As String
For i = 1 To A(0)
st(i) = A(i)
Next i
For i = 1 To A(0)
For j = 1 To i
If st(i) = st(j) And i <> j Then
Print #2, " Old! " & j;: GoTo isN
End If
Next j
Print #2, " New! " & i;
isN:
Next i
Close #2
Close #1
End
End Sub
By小白
小白好,
回覆刪除程式OK,
ReDim st(A(0)) As String
For i = 1 To A(0)
st(i) = A(i)
Next i
這四行,不是再用一次split就好了嗎?
熊掌