Zahlen einlesen + teilen

  • VB.NET

Es gibt 9 Antworten in diesem Thema. Der letzte Beitrag () ist von Electronix.

    Zahlen einlesen + teilen

    halli hallo leute ich bin ganz neu hier :)

    also ums auf den punkt zu bringen ich bin ein Ingenieur und wir haben im ersten Semester grundlagen informatik programmierung (). also da ich wirklich schlecht in algorythmen schreiben bin erbitte ich euch regelrecht um hilfe um die klausur irgendwie zu bestehen

    wir bekamen als Hausarbeit folgenden algorythmus zu schreiben den wir zuvor als flussdiagramm ausgeführt hatten:

    Eingabe von n Zahlen bis zu einem gewissen * (das bedeutet die eingabe ist vorbei)... danach Ausgabe aller Zahlen die durch 3 Teilbar sind (also mod i = 0), das heißt nur wo gerade beträge rauskommen...das ganze wird in einem Windows Form Application geschrieben.. Visual Basic 2008

    ich geb hier mal meine lösung vor und ihr könnt mir helfen was falsch ist.. ;)

    Private sub button 1 click ()

    Dim i as Integer
    Dim x as Integer
    Dim * as String

    x = Inputbox ("Geben sie die Anzahl der Zahlen ein, danach drücken sie *!")
    For i = 1 to *
    If x Mod 3 = 0 Then
    Messagebox.Show("Zahlen sind durch 3 Teilbar !") (Wenn kein Rest vorhanden ist dann is die zahl gerade richtig ?)
    Return
    End if
    End Sub

    Also das wär mal meine grundform allerdings weiß ich selber dass das totaler käse ist :D, da ich sicher 2 schleifen machen muss aba wie ich die miteinander kombinnier da setzt es leider aus :(

    könnt ihr mir helfen

    mfg Electronix
    Ich würde dafür eine Funktion benutzen, wo du den Input übergeben musst und er dir einen booleschen Wert zurückgibt.

    Die Eingabe muss, wie bei dir erwähnt, mit einem * beendet werden.

    Eingabe (Beispiel): 3 18 30 39 *

    VB.NET-Quellcode

    1. ''' <summary>
    2. ''' Prüft, ob eine Eingabe von Zahlen durch 3 teilbar ist
    3. ''' </summary>
    4. ''' <param name="input">Zahlen</param>
    5. ''' <returns>True, wenn alles durch 3 teilbar ist</returns>
    6. ''' <remarks></remarks>
    7. Private Function TeilbarDurch3(ByVal input As String) As Boolean
    8. 'Das Unnötige am Ende wegschneiden
    9. input = input.Substring(0, input.IndexOf("*"c) - 1)
    10. 'Die Zahlen (alle durch ein Leerzeichen getrennt) splitten
    11. Dim zahlen As String() = input.Split(" "c)
    12. 'Jeden Eintrag mit einer For-Schleife durchgehen (alternativ For Each)
    13. For i As Integer = 0 To zahlen.Length - 1
    14. 'Falls durch 3 teilbar
    15. If Integer.Parse(zahlen(i)) Mod 3 = 0 Then
    16. 'Weiter
    17. Continue For
    18. Else
    19. 'False zurückgeben, da eine Zahl nicht durch 3 teilbar ist
    20. Return False
    21. End If
    22. Next
    23. 'Wenn bis hier alles ausgeführt wird, dann war alles richtig und somit wird ein True zurückgegeben
    24. Return True
    25. End Function
    Dein Pseudocode war doch vollkommen richtig: einzige Ausnahme, dass die Eingabe der Zahlen nicht ausgeführt war. Vermute es wurde hier eine Eingabeschleife erwartet, die abbrechen würde sobald man "*" eingibt. Prüfe die eingegebene Zahl mit Integer.TryParse darauf , ob sie sauber umgewandelt werden kann oder ob sie z.B. Buchstaben enthält.

    An Deiner Stelle würde ich mich mal selber am Coden versuchen anstatt C&P Code zu übernehmen. Noch scheint Ihr ja noch ziemlich am Anfang der Grundlaggen zu sein. Wenn Du jetzt schon anfängst Code einfach so zu kopieren, holst Du das später nicht mehr ein.
    aufgrund des sachverhalts da, wir nur 1 semester informatik haben und wirklich nur grundlagen machen ... also das schwerste was wir machen sollen ist zahlen von n sortieren/ bzw teilen

    ja es wurde eine eingabeschleife verlangt, aba da ich das in der vorlesung nich verstanden hab wäre es freundlich wenn du mir vilt weiterhelfen würdest

    ich weiß dass mein code nur für eine zahl zugänglich ist

    könntest du vilt meinen code berichtigen oder ich übernehme einfach den code von oben ;)
    Dim i As Integer
    z As Integer
    Dim Zahlen() As Integer

    i = 1

    z = InputBox("Anzahl der Zahlen:")
    ReDim Zahlen(z)

    For i = 1 To z
    Zahlen(i) = Int(InputBox("Zahl " & i & ": "))
    Next i

    If z Mod 3 = 0 Then
    Messagebox.Show("Zahlen durch 3 teilbar!")
    Else
    Messagebox.Show("Zahlen nicht teilbar!")
    End if
    End sub

    Wie wäre es hiermit, allerdings... ist das * nicht dabei
    aber eig sollte er jetzt zahlen einlesen und diese von 1 bis z durchgehn und schauen ob sie durch 3 teilbar sind ?

    vermeintliche lösung

    VB.NET-Quellcode

    1. Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
    2. Dim i As Integer
    3. Dim anzahlZahlen As Integer
    4. Dim teilergefunden As Integer
    5. Dim x As Integer
    6. anzahlZahlen = InputBox("Geben sie die Anzahl Zahlen ein!")
    7. For i = 1 To anzahlZahlen
    8. x = InputBox("Geben Sie eine Zahl ein !")
    9. teilergefunden = 0
    10. For y = 2 To x
    11. If x Mod 2 = 0 Then
    12. MessageBox.Show("Zahl ist durch 2 teilbar")
    13. teilergefunden = 1
    14. Return
    15. End If
    16. Next
    17. If teilergefunden = 1 Then
    18. MessageBox.Show(x & "Zahl ist durch 2 teilbar")
    19. Else
    20. MessageBox.Show(x & "Zahl ist nicht teilbar")
    21. End If
    22. Next
    23. End Sub


    hab mit der eingabe noch ein wenig probleme :(
    Bist du sicher das das eine Windows Form Anwendung sein soll? Für mich klingt das nach ein typischen Konsolenanwendung.

    Und dein Ansatz ist nicht schlecht, aber klappt nicht ganz.
    Du musst die Eingabe auf * prüfen.

    Ungefähr so:

    dim AusgabeStr as string
    dim Testeingabe as Integer
    dim eingabe as String
    Do
    Eingabe = Eingabe("GIB was ein, * für Ende")
    If Integer.TryParse(Eingabe,Testeingabe) AndAlso Testeingabe Mod 3 = 0 Then
    AusgabeStr = AusgabeStr & " " & Testeingabe.tostring
    Loop Until Eingabe = *

    Messagebox("Folgende eingegebe Zahlen sind durch 3 teilbar " & AusgabeStr)

    Das ist nicht kopierbar, aber sollte dich der richtigen Lösung näher bringen.
    Versucht hast es ja :)
    Das letzte schaffst alleine

    Gruss Mono
    Das ist meine Signatur und sie wird wunderbar sein!

    Dankeeeeeeeeeeeeeeeeeee !!!!

    VB.NET-Quellcode

    1. Ich hab den Code :)))
    2. Dim anzahlZahlen As String
    3. Dim x As Integer
    4. Dim AusgabeStr As String
    5. AusgabeStr = 1
    6. Do
    7. anzahlZahlen = InputBox("Geben sie die Anzahl Zahlen ein, * für Ende!")
    8. x = InputBox("Geben Sie eine Zahl ein !")
    9. For y = 2 To x
    10. If Integer.TryParse(anzahlZahlen, x) AndAlso x Mod 3 = 0 Then
    11. AusgabeStr = AusgabeStr & " " & anzahlZahlen.ToString
    12. End If
    13. Next
    14. Loop Until anzahlZahlen = "*"
    15. MessageBox.Show("Folgende eingegebe Zahlen sind durch 3 teilbar " & AusgabeStr)
    16. End Sub