Suchen in einem Array

  • VB.NET

Es gibt 21 Antworten in diesem Thema. Der letzte Beitrag () ist von exc-jdbi.

    Ich habe jetzt extra kein Linq verwendet, da es jeden Anfänger ein bisschen überfordert.

    Lernen kann man auch in dem man den Code der Profis hier anschaut. Ich vermute, dass was du suchst, ist in etwa das hier.

    Am besten einfach mal durchsteppen und entsprechend deinen Bedürfnissen dann anpassen.

    Freundliche Grüsse

    exc-jdbi

    Spoiler anzeigen

    VB.NET-Quellcode

    1. ​Option Strict On
    2. Option Explicit On
    3. Public Module Class_2024new
    4. Private ReadOnly Rand As New Random
    5. Public Sub Main()
    6. Sample()
    7. End Sub
    8. Private Sub Sample()
    9. 'Anzahl Arrays und Array länge
    10. Dim cnt = 20, sz = 11
    11. Dim arrays = Enumerable.Range(0, cnt).
    12. Select(Function(x) RngBytes(sz, 1, 40 + 1)).ToArray()
    13. 'Auf der Console ausgeben
    14. PrintOut(arrays)
    15. 'Beispiel 5 durchläufe:
    16. '- Es wird eine zufällige Zahl zwischen 1 und 40 erzeugt
    17. '- Die Zahl wird in all den 20 Arrays gesucht, und wenn sie
    18. ' gefunden wird, wird sie in der Variable bzw. Liste 'result'
    19. ' festgehalten.
    20. Dim result = New List(Of (a As Int32, n As Int32, idx As Int32))
    21. For i = 0 To 4
    22. Dim search_number = Convert.ToByte(Rand.Next(1, 40 + 1))
    23. For j = 0 To arrays.Length - 1
    24. Dim idx = Array.IndexOf(arrays(j), search_number)
    25. If idx >= 0 Then result.Add((j, search_number, idx))
    26. ''Sollte wirklich nur ein True oder False erwünscht sein
    27. 'Console.WriteLine($"Array {j}: Number {search_number} is {idx >= 0}")
    28. Next
    29. Next
    30. PrintOut(result)
    31. End Sub
    32. Private Function RngBytes(size As Int32, min As Byte, max As Byte) As Byte()
    33. Dim result = New Byte(size - 1) {}
    34. For i = 0 To size - 1
    35. result(i) = Convert.ToByte(Rand.Next(min, max))
    36. Next
    37. Return result
    38. End Function
    39. Private Sub PrintOut(input As Byte()())
    40. For i = 0 To input.Length - 1
    41. Console.WriteLine($"{i,2}:{ControlChars.Tab}[{String.Join(", ", input(i))}]")
    42. Next
    43. Console.WriteLine()
    44. End Sub
    45. Private Sub PrintOut(input As List(Of (a As Int32, n As Int32, idx As Int32)))
    46. Dim s = input.First().n
    47. For Each x In input
    48. If Not s = x.n Then
    49. s = x.n
    50. Console.WriteLine()
    51. End If
    52. Console.WriteLine($"array Nr = {x.a}; search number = {x.n}; index found = {x.idx}")
    53. Next
    54. End Sub
    55. End Module