Bestimmte Zahlen zufällig addieren

  • VB.NET

Es gibt 11 Antworten in diesem Thema. Der letzte Beitrag () ist von kevin89.

    Bestimmte Zahlen zufällig addieren

    Hi,
    ich habe eine Textbox, wo Zahlen drinnenstehen, mit einem Komma getrennt. Beim Drücken auf Start sollen die Zahlen per Zufallsprinzip addiert werden, so dass das Ergebniss 14 rauskommt. Die Aufgaben mit dem Ergebniss 14 sollen dann in einem Fenster angezeigt werden. Dort muss unbedingt die ganze Aufgabe drinnen stehen.


    Aber wie zum Geier soll ich das machen 8| ?(

    Ich habe schon mit einer if- Schleife angefangen, der die Aufgaben mit 14 als Ergebniss ausgibt. Wie kann ich die Zahlen, die durch Komma getrennt sind auslesen und dann zufällig addieren, bis es keine Addierungs-Möglichkeiten mehr gibt.

    VB.NET-Quellcode

    1. Public Class Form1
    2. Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    3. Dim zusammenrechnen as
    4. If zusammenrechnen = 14 Then
    5. MsgBox("Möglichkeit: [Hier die Aufgabe] ")
    6. Else
    7. zusammenrechnen.Start()
    8. End If
    9. End Sub
    10. End Class

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

    In welche Klasse gehts du denn ?
    Bei Additionen gilt das Kommutativgesetz = die Reihenfolge ist beliebig.
    Ansonsten würde ich ein Feld mit 20 Einträgen dimmen ( Dim Feld(28) as Integer) geht dann von 0 bis 28 = 29 Zahlen.
    Oder starte bei 1 und gehe bis 29 dann brauchst du nicht zu korrigieren.
    Eine Schleife liest deine Textfelder (datagrid wäre einfacher wegen dem Index) aus und überträgt sie ins Feld/Array. Da kannst du dann besser mit arbeiten.
    Ansonsten siehe Bemerkung oben.
    Klasse: 9

    Also ich habe mal weitergemacht, hab aber keine Ahnung, wie ich den Rest machen soll mit dem Addieren aller Möglichkeiten der Zahlen und dem Auslesen der Zahlen??

    Mein jetziger Code:

    VB.NET-Quellcode

    1. Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    2. '[text auslesen]
    3. Dim zusammenrechnen As String
    4. '[per zufallsprinzip addieren]
    5. If zusammenrechnen = 14 Then
    6. MsgBox("Möglichkeit: [Hier die Aufgabe] ")
    7. Else
    8. start.zusammenrechnen()
    9. End If
    10. End Sub
    11. End Class


    Ich habs schon versucht mit do until, aber mir fällt nix dazu ein. Ich kann ja schlecht so anfangen:

    VB.NET-Quellcode

    1. Do Until , isn´t there
    2. ...

    :D

    und if kann ich auch nicht sagen: les mal aus bzw. wüsste ich nicht wie 8o
    ahoi,

    @gene: er hat doch geschrieben das er nur eine textbox hat in dem die zahlen stehen

    @chris: du müsstest die textbox in ein array einlesen lassen dafür brauchst du aber den string aus der textbox
    also holst du dir die zahlen in eine stringvariable und schneidest beim komma ab und liest die zahl in das array

    VB.NET-Quellcode

    1. Dim strVar As String
    2. strVar = TextBox1.Text
    3. Dim StrArr() As String = strVar.Split(",")


    dann frage ihc mich willst du die zahlen solange zusammenrechnen bis 14 rauskommt ??
    Grüße Manu

    Was Gott dem Menschen erspart hat, kann der Computer.
    Billy ©, (*1932), Schweizer Aphoristiker
    Quelle: www.Aphorismen.de
    naja nicht ganz:

    ich möchte als erstes alle möglichkeiten durchprobieren. Sollte keine 14 rauskommen, soll eine Msgbox("keine Möglichkeit") kommen.


    Also dazu könnte ich später selbst eine if-Variable machen. Nur das Problem ist erst mal das addieren per Zufallsprinzip.

    Danke für die Hilfe :)

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „christophkrner“ ()

    naja also wenn du die zahlen dann in dem array hast kannst du zufahlszahlen
    zw 0 und dem höchsten array index machen und die dazugehörigen werte benutzen
    Grüße Manu

    Was Gott dem Menschen erspart hat, kann der Computer.
    Billy ©, (*1932), Schweizer Aphoristiker
    Quelle: www.Aphorismen.de
    Soory, aber irgendwie ist das trotzdem noch ein bisschen zu schwer, da ich noch nicht mit arrays und zufallsmethoden gearbeitet habe. Kann mir das jemand zeigen, da ich es mit Code besser lerne. habs nämlich schon selbst versucht, aber es ist einfach großes Chaos rausgekommen.

    Bitte helft mir! :thumbdown:

    Also meine Codes:

    VB.NET-Quellcode

    1. Dim Varieblelol As Integer
    2. Variablelol = die eine Zahl + die ander Zahl


    und

    VB.NET-Quellcode

    1. Do Until
    2. [ statements ]
    3. [ Exit Do ]
    4. [ statements ]
    5. Loop


    bekomme ich einfach nicht irgendwie zusammen

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

    Kann mir das jemand programmieren, da ich nicht weis, wie ich die Codes zusammenfügen soll.

    Mein Code:

    VB.NET-Quellcode

    1. Public Class Form1
    2. Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    3. '[text auslesen]
    4. Dim strVar As String
    5. strVar = TextBox1.Text
    6. Dim StrArr() As String = strVar.Split(",")
    7. 'Auswahl der Zahlen
    8. Dim max As Integer = 2000000
    9. Do
    10. For i = 0 To (max - 1) Step 1
    11. ReDim Preserve Zufallszahl(0 To i)
    12. Randomize()
    13. Zufallszahl(UBound(Zufallszahl)) = Math.Round((Rnd() * 20), 4)
    14. Next i
    15. Loop Until UBound(Zufallszahl) = (max - 1)
    16. 'Macht die Aufgaben
    17. 'Macht eine Loop, dass es die 14 ausgibt
    18. Do Until
    19. [ statements ]
    20. [ Exit Do ]
    21. [ statements ]
    22. Loop
    23. 'fertig
    24. Dim zusammenrechnen As String
    25. If zusammenrechnen = 14 Then
    26. MsgBox("Möglichkeit: [Hier die Aufgabe] ")
    27. Else
    28. start.zusammenrechnen()
    29. End If
    30. End Sub
    31. End Class
    Eine Möglichkeit:

    VB.NET-Quellcode

    1. Dim possiblenumbers As New List(Of Integer), ergebnis As Integer, aufgabe As New System.Text.StringBuilder
    2. For Each zahl As Integer In Split(TextBox1.Text, ",") : possiblenumbers.Add(zahl) : Next
    3. Dim r As New System.Random : Randomize()
    4. Do Until ergebnis >= 14
    5. Dim rand As Integer = r.Next(0, possiblenumbers.Count - 1)
    6. ergebnis += possiblenumbers(rand)
    7. aufgabe.Append(IIf(aufgabe.ToString.Length = 0, possiblenumbers(rand), " + " & possiblenumbers(rand)))
    8. Loop
    9. aufgabe.Append(IIf(ergebnis > 14, " - " & ergebnis - 14, Nothing))
    10. MsgBox(aufgabe.ToString)

    Den Rest solltest du selber schaffen. Dieser Code generiert aus den in der Textbox im Format "1,4,5,4,6,36,4" stehenden Zahlen eine Aufgabe, die 14 ergibt. Allerdings wird am Ende noch einmal subtrahiert (falls du nur Addition wolltest, musst du das ändern).