[vb6] Mathe-Übungs-Programm *Brauche Hilfe*

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • [vb6] Mathe-Übungs-Programm *Brauche Hilfe*

    Habe ein Mathe-Übungs-Programm,

    funktioniert soweit so gut aber folgendes:

    - Ich habe 2 Textfelder, eines zum festlegen der mininmalen Zahl des Ergebnisses und eine zur Maxmimalen Zahl des Ergebnisses.
    - Nur leider wird immer nur für die zwei Summand-Glieder z.b. der Addition z.B. zwischen 0-20 ausgewählt und das Ergbiss ist dann trotzdem höher als 20.

    - Nun die Frage, wie stelle ich das an das das Ergebnis in diesem Bereich erzwungen wird ?
    - Achso und Bei Minus, Mal und Durch, wie stelle ich das dort an ?

    Hier mein Code:

    Quellcode

    1. Private Sub Form_Load()
    2. Randomize
    3. End Sub
    4. Private Sub Command1_Click()
    5. Dim frage As String
    6. ' Initalisieren
    7. Randomize
    8. ' Plus +
    9. If Option1.Value = True Then
    10. gen_1 = Int((zb2.Text * Rnd) + zb1.Text)
    11. gen_2 = Int((zb2.Text * Rnd) + zb1.Text)
    12. aufgabe = gen_1 & "+" & gen_2
    13. aufgabe_loesung = gen_1 + gen_2
    14. ' Minus -
    15. ElseIf Option2.Value = True Then
    16. gen_1 = Int((zb2.Text * Rnd) + zb1.Text)
    17. gen_2 = Int((zb2.Text * Rnd) + zb1.Text)
    18. aufgabe = gen_1 & "-" & gen_2
    19. aufgabe_loesung = gen_1 - gen_2
    20. ' Mal *
    21. ElseIf Option3.Value = True Then
    22. gen_1 = Int((zb2.Text * Rnd) + zb1.Text)
    23. gen_2 = Int((zb2.Text * Rnd) + zb1.Text)
    24. aufgabe = gen_1 & "*" & gen_2
    25. aufgabe_loesung = gen_1 * gen_2
    26. ' Durch /
    27. ElseIf Option4.Value = True Then
    28. gen_1 = Int((zb2.Text * Rnd) + zb1.Text)
    29. gen_2 = Int((zb2.Text * Rnd) + zb1.Text)
    30. aufgabe = gen_1 & "/" & gen_2
    31. aufgabe_loesung = gen_1 / gen_2
    32. End If
    33. ' Frage stellen
    34. frage = InputBox(aufgabe, "Rechen-König", , 3200, 1600)
    35. ' Aufgabe überprüfen
    36. If aufgabe_loesung = frage Then
    37. MsgBox "Richtig"
    38. Else
    39. MsgBox "Falsch"
    40. End If
    41. End Sub
    Alles anzeigen


    Also 2 Textfelder für Begrenzung des Ergebnisses VON und BIS, die Rechenart, und ein Button für die neue Aufgabe ist vorhanden in der Form.
    Will nur wissen wie ich das Ergebniss so festlegen kann.

    Danke schonmal im Vorraus für jede Hilfe!!!

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von ricardohassa ()

  • Ganz einfach:
    Bei Plus generiest du zuerst eine Zufallszahl, nimmst dann das Maximum ziehtst davon die erste Zahl ab und nimmst diese zahl als dein neues Maximum.


    Hier mal etwas Pseudocode dafür ...

    Quellcode

    1. # Bei Plus
    2. gen1 = generate(Max)
    3. newMax = Max - gen1
    4. gen2 = generate(newMax)
    5. #Bei Minus
    6. gen1 = generate(Max)
    7. newMax = gen1
    8. gen2 = generate(newMax)
    9. #mal
    10. gen1 = generate(Max)
    11. newMax = Max / gen1
    12. gen2 = generate(newMax)
    13. #geteilt
    14. # Es gibt keine Probleme, da beim Teilen nichts negativ werden kann und die Zahlen nicht größer werden (solang du dich auf natürliche Zahlen beschränkst)
    Alles anzeigen



    Einfach immer abprüfen, dass die Zahlen eben nicht zu groß / klein werden.

    MrSpider


    PS: Ich hoffe, dass ich dich richtig verstanden habe .... :)
  • Ich habs für PLUS, ich teile das Maximale durch 2 und da kann ein Glied nur die hälfte sein und nicht das maximale überschreiten:

    Quellcode

    1. ' Plus +
    2. If Option1.Value = True Then
    3. gen_1 = Int((zb2.Text / 2 * Rnd) + zb1.Text)
    4. gen_2 = Int((zb2.Text / 2 * Rnd) + zb1.Text)
    5. aufgabe = gen_1 & "+" & gen_2
    6. aufgabe_loesung = gen_1 + gen_2


    Aber wie mach ich das bei den anderen drei Recharten?