21. januar 2008 - 12:48Der er
4 kommentarer og 1 løsning
test input fra file
Hej
jeg har en tekstfil med en masse rækker, hvad række starter med et nummer der er efterfuldt af et ";" hvorden tjekker jeg at de tal der står først i hver linien er der max 2 gange. her er er et eks:
Du er nødt til at holde rede på, om et givet tal er talt med, så det bliver en længere smøre:
Dette antager at tallene kan komme i tælfældig rækkefølge i tilfældig orden.
Hvis tallene kun forekommer éen gang i en "blok", så kan koden afkortes lidt.
Dim i As Integer, j As Integer, k As Integer Dim iNums() As Integer Dim sNum As String Dim sCheckedNums() As Integer Dim bValidNum As Boolean Dim iCountNum As Integer
'indlæs filen til array (husk at ændre stien!!): i = FreeFile Open "C:\Documents and Settings\tjacob\Skrivebord\Eksp11\test.txt" For Input As #i Do Until EOF(i) ReDim Preserve iNums(j) Line Input #i, sNum k = InStr(1, sNum, ";", vbTextCompare) iNums(j) = CInt(Left(sNum, k - 1)) j = j + 1 Loop Close #i
' loop igennem array, og tæl forekomster: ReDim sCheckedNums(0) For i = 0 To UBound(iNums) 'Se om Num allerede er tjekket: bValidNum = True If UBound(sCheckedNums) > 0 Then For j = 1 To UBound(sCheckedNums) If sCheckedNums(j) = iNums(i) Then bValidNum = False Exit For End If Next j If bValidNum Then ReDim Preserve sCheckedNums(UBound(sCheckedNums) + 1) sCheckedNums(UBound(sCheckedNums)) = iNums(i) End If Else ReDim Preserve sCheckedNums(1) sCheckedNums(1) = iNums(i) End If ' hvis nummer er nyt, tæl antal forekomster: If bValidNum And i < UBound(iNums) Then iCountNum = 1 For j = (i + 1) To UBound(iNums) If iNums(j) = iNums(i) Then iCountNum = iCountNum + 1 Next j If iCountNum > 2 Then MsgBox "Tallet: " & CStr(iNums(i)) & " forekommer " & CStr(iCountNum) & " gange." End If Next i
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.