Sortieralgorithmus funktioniert nicht

  • VB.NET
  • .NET (FX) 4.0

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von sonne75.

    Sortieralgorithmus funktioniert nicht

    Hallo Zusammen

    Ich versuchen den Sortieralgorithmus Bubblesort umzusetzten.
    Ich habe den Code in 2 Formularen. Zuerst rufe ich via Button den ersten Codeteil auf. Dort übergeben ich den eingegebenen Text in eine Variable.
    Bei ausgelagerten Code wende ich dann den Sortieralgorithmus an. Diesen habe ich mit Hilfe von einem Struktogramm und Forumeinträgen gemacht.
    Wenn ich den Code ausführe passiert einfach nichts. Es kommt keine Fehlermeldung.
    Ich glaube es könnten zwei Fehler sein. 1. Ich rufe den 2 Codeteil nicht richtig auf. 2. Ich übergebe schlussentlich kein Resultat.

    Hoffe jemand von euch kann mir aufzeigen wo der Fehler liegt.

    Hier mein aktueller Code

    VB.NET-Quellcode

    1. Private Sub cmdbubblesort_Click(sender As System.Object, e As System.EventArgs) Handles cmdbubblesort.Click
    2. Dim eingabe As String = txtsortiert.Text()
    3. sortedString = bubblesort(eingabe)
    4. txtsortiert.Text = sortedString
    5. End Sub


    VB.NET-Quellcode

    1. Public Function bubblesort(ByVal eingabe As String)
    2. Dim strZuSortieren As String = eingabe
    3. Dim chTemp As Char
    4. Dim i As Integer
    5. Dim j As Integer
    6. Dim intVariabel As Integer
    7. Dim intAnzahlZeichen As Boolean
    8. intAnzahlZeichen = Len(strZuSortieren)
    9. intVariabel = 1
    10. For j = 1 To intAnzahlZeichen - intVariabel
    11. For i = 1 To intAnzahlZeichen - 1
    12. If Mid(strZuSortieren, 1, 1) > Mid(strZuSortieren, 1 + 1, 1) Then
    13. chTemp = Mid(strZuSortieren, i + 1, 1)
    14. Mid(strZuSortieren, i + 1, 1) = Mid(strZuSortieren, i, 1)
    15. Mid(strZuSortieren, i, 1) = chTemp
    16. End If
    17. Next i
    18. intVariabel = intVariabel + 1
    19. Next j
    20. eingabe = strZuSortieren
    21. Return eingabe
    22. End Function



    Vielen Dank für jeder der mir helfen will!

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „inf12i“ ()

    inf12i schrieb:

    meine Fehler
    Gib Deinem Projekt zunächst Option Strict On.

    VB.NET-Quellcode

    1. Public Function bubblesort(ByVal eingabe As String) As String
    2. Dim strZuSortieren As Char() = eingabe.ToCharArray
    3. Dim chTemp As Char
    4. Dim i As Integer
    5. Dim j As Integer
    6. Dim intVariabel As Integer
    7. Dim intAnzahlZeichen As Integer
    8. intAnzahlZeichen = Len(strZuSortieren)
    9. intVariabel = 1
    10. For j = 1 To intAnzahlZeichen - intVariabel
    11. For i = 0 To intAnzahlZeichen - 2
    12. If strZuSortieren(i) > strZuSortieren(i + 1) Then
    13. ' Swap
    14. chTemp = strZuSortieren(i + 1)
    15. strZuSortieren(i + 1) = strZuSortieren(i)
    16. strZuSortieren(i) = chTemp
    17. End If
    18. Next i
    19. intVariabel = intVariabel + 1
    20. Next j
    21. eingabe = ""
    22. For Each chTemp In strZuSortieren
    23. eingabe &= chTemp
    24. Next
    25. Return eingabe
    26. End Function

    Bilder
    • Strict.png

      4,39 kB, 581×78, 108 mal angesehen
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „RodFromGermany“ ()

    Erstmal vielen Dank für deine Antwort.


    Wenn ich die Anpassungen mache welche du gemacht hast funktioniert es.
    Könntest du mir bitte noch erklären was ich an meinem Code falsch ist und wieso du gewisse Codeelemente verwendet hast.

    1.
    Dim strZuSortieren As Char() = eingabe.ToCharArray

    Wieso verwendest du den Datentyp Char und was macht "ToCharArray"?

    2.
    If strZuSortieren(i) > strZuSortieren(i + 1) Then ' Swap
    chTemp = strZuSortieren(i + 1)
    strZuSortieren(i + 1) = strZuSortieren(i)
    strZuSortieren(i) = chTemp

    Wieso nicht mehr mit Mid ?

    3.
    For Each chTemp In strZuSortieren
    eingabe &= chTemp
    Next

    Habe ich dies richtig Verstanden. Jedesmal wenn chTemp wieder neu definiert wurde wird es auch wieder in die TextBox reingeschrieben ?

    Vielen Dank für deine Hilfe!

    inf12i schrieb:

    Codeelemente
    1. ToCharArray() konvertiert den String To ein Char Array. lick mit der Maus drauf und drück F1 = Hilfe.
    2. Mid() ist VB6. .NET wäre SubString(). Da wir nun ein Char-Array haben, können wir da einfach mit dem Index drauf zugreifen.
    3. "TextBox" kommt in meinem Code nicht vor.
      Ich baue den Rückgabestring aus dem Char-Array neu auf.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    sonne75 schrieb:

    Das geht auch direkt.
    Nicht so, wie ich es gern hätte.
    Bilder
    • Chars.png

      2,16 kB, 185×56, 168 mal angesehen
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!