Kan iemand die ene fout in het programma vinden ?

Status
Niet open voor verdere reacties.

DavidWebb

Gebruiker
Lid geworden
11 mei 2012
Berichten
8
Hallo,

De code hieronder levert op:

0500 not found
1000 is zipcode of Brussel
2000 is zipcode of Antwerpen
3000 is zipcode of 2000
4000 not found
8000 is zipcode of Brugge
9000 is zipcode of Gent
9500 not found

De vierde regel zou moeten zijn :

3000 is zipcode of Leuven

Waar heb ik een fout gemaakt in mijn code ? Ik heb het al verschillende keren overlezen, maar vind het niet.
Alvast bedankt voor de hulp,
David Webb

vbnet code - Bekijk de code zonder highlighting - Klap code in

Code:
 Sub Main()
     
    Dim zipcodes() As String = {"1000", "Brussel", "2000", "Antwerpen", "3000", "Leuven", "8000", "Brugge", "9000", "Gent"}
    Dim zipcodesCount As Integer = 5
    Dim searchValues() As String = {"0500", "1000", "2000", "3000", "4000", "8000", "9000", "9500"}
     
    For searchValueIndex = 0 To 7
    Dim searchValue As String = searchValues(searchValueIndex)
    Dim index As Integer
    Dim found As Boolean = False
     
    index = Array.BinarySearch(zipcodes, searchValue)
     
    If index > -1 Then found = True
     
    index = 0
    Do
    If searchValue = zipcodes(index * 2) Then
    found = True : index = index * 2
    Else
    index += 1
    End If
    Loop Until index = zipcodesCount Or found
     
    If found Then
    Console.WriteLine(searchValue & " is zipcode of " & zipcodes(index + 1)) Else
    Console.WriteLine(searchValue & " not found")
    End If
    Next
    Console.ReadLine()
    End Sub
De fout moet in onderstaand stukje zitten, maar ik lees er waarschijnlijk over ! !


Code:
index = Array.BinarySearch(zipcodes, searchValue)

If index > -1 Then found = True

index = 0
Do
If searchValue = zipcodes(index * 2) Then
found = True : index = index * 2
Else
index += 1
End If
Loop Until index = zipcodesCount Or found
 
Laatst bewerkt door een moderator:
Hoi,

Allereerst: Welkom op Helpmij.nl!

Als je codes post, wil je daar dan a.u.b code-tags omheen zetten? (Het '#'-knopje bovenaan de tekstbox als je een bericht plaatst)


Ik vraag me af of het niet makkelijker is om zelf een code te schrijven die hetzelfde doet... Ziet er niet heel moeilijk uit...

Ik denk dat het aan dit lijntje ligt:
Code:
index = Array.BinarySearch(zipcodes, searchValue)
Probeer het nog eens zonder dat lijntje...

MartinJM
 
Klein voorbeeld:

[cpp]Sub Main()
Dim zipcodes() As String = {"1000", "Brussel", "2000", "Antwerpen", "3000", "Leuven", "8000", "Brugge", "9000", "Gent"}
Dim searchValues() As String = {"0500", "1000", "2000", "3000", "4000", "8000", "9000", "9500"}

For Each item As String In searchValues
Dim index As Integer = Array.IndexOf(zipcodes, item)
If index > 0 Then
Console.WriteLine("The ZIP-Code of {0} is {1}", zipcodes(index + 1), zipcodes(index))
Else
Console.WriteLine("{0} is not found.", item)
End If
Next
Console.ReadKey()
End Sub[/cpp]
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan