Brauche Hilfe bei Programmieren eines Programms, dass jeden zweiten Buchstaben aus einem String löscht

  • VB.NET

Es gibt 10 Antworten in diesem Thema. Der letzte Beitrag () ist von DasHuhn.

    Brauche Hilfe bei Programmieren eines Programms, dass jeden zweiten Buchstaben aus einem String löscht

    Hallo zusammen,

    ich bin neu hier und Suche ein paar fachkundige Leute die sich mit VB auskennen.
    Ich habe dieses Jahr angefangen Ingenieruswissenschaften zu Studieren und dort habe ich unter anderem auch das Fach Informatik.
    Wir haben jetzt als Projektarbeit aufbekommen verschiedene Programme mit VB zu Programmieren.
    Da ich noch NIE irgendwas mit Programmieren zu tun hatte, habe ich tierische Probleme.

    Die Aufgabe ist folgende:

    Schreiben Sie ein Visual Basic Programm das folgendes leisten soll:
    Es soll ein Wort über die Tastatur eingegeben werden könne, welches nach Überarbeitung durch das Programm jeden zweiten Buchstaben , in einem Textfeld oder einer Message-box,anzeigt.

    Es sind keine Sonderzeichen oder Umlaute erlaubt, Groß- und Kleinschrift sind aber zulässig.

    Folgende Funktionen sollen verwendet werden: Lcase(), len(), For Schleife um den ersten mit dem letzten, den zweiten mit dem vorletzten, den dritten mit dem drittletzten....Buchstaben zu vergleichen und die mid() Funktion für den Vergleich die einzelnen Buchstaben zu selektieren.

    Folgendes habe ich selber schonmal versucht zu programmieren:

    Public Class Form1
    Dim Wort As String
    Dim NeuesWort As String


    Private Sub TextBox1_KeyPress(ByVal sender As Object, _
    ByVal e As System.Windows.Forms.KeyPressEventArgs) _
    Handles TextBox1.KeyPress

    Select Case e.KeyChar
    Case "a" To "z", ControlChars.Back ' Buchstaben a bis z und Backspace werden zugelassen
    Exit Sub
    End Select


    e.Handled = True

    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

    Wort = TextBox1.Text
    Dim i As Integer

    For i = 1 To Len(Wort) 'hier weis ich nicht weiter, weil ich keine Ahnung hab wie ich die einzelnen Funktionen verschachteln muss hab schon einiges ausprobiert aber das ging alles schief



    Next

    End Sub
    End Class





    Hoffe hier kann mir jemand weiterhelfen

    Danke schonmal im Vorraus

    Bitte das nächste Mal den VB-Tag für die Codeformatierung verwenden! Admin

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Marcus Gräfe“ ()

    du könntest es ja mit einer schleife versuchen also so ungefähr:

    VB.NET-Quellcode

    1. Dim I As Integer 'Zählvariable
    2. Dim String1 As String 'der eigentliche String
    3. Dim String2 As String 'Jede zweite Ziffer des eigentlichen Strings
    4. For I = To X / 2 'X = länge des strings der bearbeitet werden muss
    5. String2 = String2 & Left(String1, I)
    6. I = I + 2
    7. Next


    EDIT:
    Sorry vergess mein beitrag hab dein post nur schnell überflogen bevor ich gepostet hab mein fehler ^^
    @Coldpepp, das verändern der Zählvariable in der For-Schleife ist böser Stil. Die Variable wird doch automatisch hochgezählt. Mit

    VB.NET-Quellcode

    1. For I = 0 to Textlaenge Step 2
    gelingt das, denk ich, besser.
    Fiel Fergnügen
    Vatter
    :thumbsup: Seit 26.Mai 2012 Oppa! :thumbsup:
    danke für die schnellen antworten.
    Also ich hab mich die woche mit VB was auseinander gesetzt und sowas wie du coldpepp vorschlägst hab ich mir auch zuerst übelegt,
    jedoch haben wir die Vorgaben, die mid und len funktion und die for Schleife zu verwenden, das ist mien problem im moment.
    Ich weis nicht wie ich der mid funktion durch die schleife sagen kann, das sie nur jeden 2ten Buchstaben anzeigen soll.
    Schau dir ma dashier an. Mit Mid(String, Start, Anzahl) erhältst du eine Anzahl Zeichen ab einer Start-Position. Also ist Start 0,2,4,6... und die Anzahl, da du ja immer 1 Zeichen haben willst =... 1 ;)
    Wenn du jetzt die For-Schleife mit der Anzahl der Zeichen von 0 bis Stringlänge - 1 in 2er-Schritten durchlaüfst.... :D
    Alles klar?
    :thumbsup: Seit 26.Mai 2012 Oppa! :thumbsup:
    LCase, Len, etc. sind Überbleibsel aus VBx-Zeit.
    Falls Du diese unbedingt einsetzen musst, dann sorry (hab keine Lust ;))
    Ansonsten:

    VB.NET-Quellcode

    1. Public Class Form1
    2. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    3. End Sub
    4. Private Function MakeMeDoof(ByVal input As String) As String
    5. Dim sb As New System.Text.StringBuilder
    6. For i As Integer = 0 To input.Length - 1
    7. If i Mod 2 = 0 Then sb.Append(input(i).ToString)
    8. Next
    9. Return sb.ToString
    10. End Function
    11. Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged
    12. TextBox2.Text = Me.MakeMeDoof(TextBox1.Text)
    13. End Sub
    14. End Class
    @Vatter
    wirklich verstehen tu ich das nicht was du meinst.
    Die mid Funktion gibt ja eine bestimmte anzahl an Buchstaben wieder die man eingibt.
    Angenommen ich hab folgendes:

    Dim Wort as String = "Hallo"
    DIm Wort2 as String

    und mache dann

    Wort2= mid(Wort,1,3)

    dann steht in der ausgabe "Hal"

    ich weiß halt nicht weiß halt nicht wie ich das in der mid funktion mit zweierschritten machen soll

    @ xtta02

    danke für deine Antwort, das Program funktionier auf jednefall so, wie es am Ende bei uns aussehen soll, aber leider müssen wir wirklich die mid(), len() und LCase Funktion benutzen.
    Wie das an schulen und Hochschulen am Anfang halt so ist, fangen wir halt komplett von vorne an und machen erstmal die Basics, und das scheint mir doch schon was fortgeschrittener.
    Ich könnte das meinem Prof wahrscheinlich auch nicht erklären was in deinem Programmcode passiert.
    VB6 war schon so lange her ;)
    So müsste es aber funktionieren:

    VB.NET-Quellcode

    1. Private Function GetMyText(ByVal input As String) As String
    2. Dim ausgabe As String
    3. Dim index, textLänge As Integer
    4. Dim zeichen As Char
    5. ausgabe = ""
    6. zeichen = ""
    7. textLänge = Len(input)
    8. If textLänge > 0 Then
    9. For index = 1 To textLänge Step 2
    10. zeichen = Mid(input, index, 1)
    11. ausgabe = ausgabe & zeichen
    12. Next
    13. End If
    14. GetMyText = ausgabe
    15. End Function
    @xtts02


    genau so sollten wir das machen, funktioniert so wies soll :)
    Das einzige was ich nicht ganze verstehe ist, warum du die Variabel Zeichen als Char Deklariert wird und was im weiteren Programmverlauf damit auf sich hat.

    Ansonsten ist alles gut verständlich für mich.

    Danke für die Hilfe.

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

    Diese Variable habe ich nur dazu genommen, damit man die einzelne Schritte leichter erkennt.

    VB.NET-Quellcode

    1. zeichen = Mid(input, index, 1)
    2. ausgabe = ausgabe & zeichen

    Man könnte auch so schreiben:

    VB.NET-Quellcode

    1. ausgabe = ausgabe & Mid(input, index, 1)

    ist für "Anfänger" aber nicht so leicht nachvollziehbar (vermute ich) ;)