betekenins index=-1 in lineair zoeken.

Status
Niet open voor verdere reacties.

verhaba

Gebruiker
Lid geworden
8 feb 2008
Berichten
79
Code:
Module Module1
    Sub Main()
        Dim base As Integer = 2
        Dim count As Integer = 10
        Dim upperbound As Integer = count - 1
        Dim numbers(upperbound) As Integer
        '
        Dim index As Integer
        For index = 0 To upperbound

            ' de waarden opvullen in de array.
            ' val index 0 =     1       *   2   (2)
            '           1 =     2       *   2   (4)
            '           2 =     3       *   2   (6)
            '           3 =     4       *   2   (8)

            numbers(index) = (index + 1) * base
        Next
        '
        Dim number As Integer

        '           =   1   to 2 * 11   (22)
        For number = base - 1 To base * count + 1
            ' linear search
            Dim found As Boolean = False
            Dim exhausted As Boolean = False
            index = -1
            Do Until found OrElse exhausted
                index += 1
                found = (numbers(index) = number)
                exhausted = (index = upperbound)
            Loop
            ' output
            If found Then
                Console.Write(number & " found at index " & index)
            Else
                Console.Write(number & " not found")
            End If
            If exhausted Then
                Console.WriteLine(", search exhausted")
            Else
                Console.WriteLine(", search not exhausted")
            End If
        Next
        '
        Console.ReadLine()
    End Sub

End Module
 
wat is je probleem?

Meestal als je een getal in een rij van getallen zoekt, en deze zit er niet in, dan krijg je '-1' terug; zit ie er wel in, dan krijg je de index van dat getal terug.

Bedoelde je dit?
 
Neen, het zou een standaard uitdrukking moeten zijn in vb, om een probleem op te vangen. Maar voor wat weet ik nu net niet meer... Frustrerend eigenlijk... Ik zoek nog wat verder, als ik iets weet hou ik jullie zeker op de hoogte.
Toch bedankt voor jullie moeite.
 
Laatst bewerkt:
wat is je probleem?

Meestal als je een getal in een rij van getallen zoekt, en deze zit er niet in, dan krijg je '-1' terug; zit ie er wel in, dan krijg je de index van dat getal terug.

Bedoelde je dit?
Idd... dat zou het wel moeten zijn...
Ten tweede geeft hij ook onmiddellijk de waarde op index 0 want de index wordt onmiddellijk met verhoogd.
dank jullie iedereen voor jullie hulp.
 
Code:
Module Module1
    Sub Main()
        Dim base As Integer = 2
        Dim count As Integer = 10
        Dim upperbound As Integer = count - 1
        Dim numbers(upperbound) As Integer
        '
        Dim index As Integer
        For index = 0 To upperbound

            ' de waarden opvullen in de array.
            ' val index 0 =     1       *   2   (2)
            '           1 =     2       *   2   (4)
            '           2 =     3       *   2   (6)
            '           3 =     4       *   2   (8)

            numbers(index) = (index + 1) * base
        Next
        '
        Dim number As Integer

        '           =   1   to 2 * 11   (22)
        For number = base - 1 To base * count + 1
            ' linear search
            Dim found As Boolean = False
            Dim exhausted As Boolean = False
            index = -1
            Do Until found OrElse exhausted
                index += 1
                found = (numbers(index) = number)
                exhausted = (index = upperbound)
            Loop
            ' output
            If found Then
                Console.Write(number & " found at index " & index)
            Else
                Console.Write(number & " not found")
            End If
            If exhausted Then
                Console.WriteLine(", search exhausted")
            Else
                Console.WriteLine(", search not exhausted")
            End If
        Next
        '
        Console.ReadLine()
    End Sub

End Module


De variabele 'exhausted' is hier toch eigenlijk niet nodig... aangezien je eigenlijk alleen wilt controleren of het getal zich in de array bevindt, toch ?

Code:
    Sub Main()
        Dim base As Integer = 2, _
            count As Integer = 10, _
            numbers(count - 1) As Integer, _
            index As Integer, _
            number As Integer

        For index = 1 To UBound(numbers)
            numbers(index - 1) = index * base
        Next

        For number = base - 1 To base * (count + 1) 'als je er geen haakjes omheen zet dan telt ie niet tot 22 ;)
            index = -1
            Dim found As Boolean = False

            Do While (Not found And Not index = UBound(numbers))
                index = index + 1
                found = numbers(index) = number
            Loop

            If found Then
                Console.WriteLine(CStr(number) & " found at index " & CStr(index))
            Else
                Console.WriteLine(CStr(number) & " not found.")
            End If
        Next

        Console.ReadKey()
    End Sub
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan