Taschenrechner programmieren

  • VB.NET

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

    Taschenrechner programmieren

    Guten Tag allerseits,
    ich habe mich mal damit auseinandergesetzt einen Taschenrechner zu programmieren.
    Ich habe ihn auch soweit hinbekommen, allerdings mit der Einschränkung das der Benutzer um z.B. ein Additionsergebnis zu bekommen
    auf den Plus Button drücken muss, da ich hinter dem Button jeweils sowas stehen habe:

    VB.NET-Quellcode

    1. Private Sub cmdPlus_Click(sender As Object, e As EventArgs) Handles cmdPlus.Click
    2. Dim zahl1, zahl2 As Double
    3. Try
    4. zahl1 = Convert.ToDouble(txtZahl1.Text)
    5. zahl2 = Convert.ToDouble(txtZahl2.Text)
    6. lblErgebnis.Text = zahl1 + zahl2
    7. Catch ex As Exception
    8. End Try
    9. End Sub

    Jetzt möchte ich, das er mir das Ergebnis ausrechnet, wenn ich auf den Button Ergebnis (=) gehe. Daher hatte ich mir
    überlegt, einfach den Click auf den (z.b.) plus button als variable zu speichern und dann über ein if then quasi abzufragen ob der
    button angepsprochen wurde. Also wenn z.b. auf plus geklickt wird, dann wird die Variable 1 gespeichert.
    Allerdings müsste ich dann ja z.b. ein unsichtbares textfeld einfügen und dorthin die Variable ausgeben, um sie im Nachhinein wieder
    auszulesen um zu wissen welches Ereigniss gewünscht ist.
    Dies erscheint mir allerdings sehr aufwendig und wenig wünschenswert.
    Das was ich bis jetzt habe und

    VB.NET-Quellcode

    1. Private Sub cmdErgebnis_Click(sender As Object, e As EventArgs) Handles cmdErgebnis.Click
    2. Dim zahl1, zahl2 As Double
    3. Dim pl, mi, du, ma As Boolean
    4. zahl1 = Convert.ToDouble(txtZahl1)
    5. zahl2 = Convert.ToDouble(txtZahl2)
    6. If
    7. pl = True
    8. then lblErgebnis.Text = zahl1 + zahl2
    9. Elseif
    10. mi = True
    11. then lblErgebnis.Text = zahl1 - zahl2
    12. ElseIf
    13. du = True
    14. then lblErgebnis.Text = zahl1 / zahl2
    15. ma = True
    16. then
    17. lblErgebnis.Text = zahl1 * zahl2
    18. End If
    19. End Sub


    Ich hoffe ihr könnt mir helfen.

    mfg
    Bitte sehr:
    [VB 2005] Professioneller Taschenrechner

    Der Kann alles :D
    Mfg: Gather
    Private Nachrichten bezüglich VB-Fragen werden Ignoriert!


    vielen Dank erstmal für deine Antwort. Das Ereignis, dass ich mit dem von dir vorgeschlagenen Code erreiche ist allerdings eine reine Addition, sodass ich ebenfalls den oben von mir vorgeschlagenen Code verwenden könnte, also:
    Private Sub cmdPlus_Click(sender As Object, e As EventArgs) Handles cmdPlus.Click
    Dim zahl1, zahl2 As Double
    Try
    zahl1 = Convert.ToDouble(txtZahl1.Text)
    zahl2 = Convert.ToDouble(txtZahl2.Text)
    lblErgebnis.Text = zahl1 + zahl2
    Catch ex As Exception

    End Try
    End Sub

    Mir geht es ja darum, dass, wenn er den button = drückt es die Möglichkeit gibt, das es + - * / ist.
    Vorgehen des Benutzers ist im Moment:
    1. Zahlen eingeben
    2. Für Addition Button Addition drücken, Für Subtraktions Button Subtraktion drücken.

    Gewünschtes Vorgehen:
    1. Zahl 1 eingeben
    2. + - / oder * drücken
    3. Zahl 2 eingeben
    4. auf = drücken
    5. Ergebnis bekommen

    Problem: Ich weiß nicht, wie ich den = button dazu bringe, entweder + oder auch z.b. - zu rechnen, obwohl es nur ein Button gibt.

    Edit:
    Danke Gather:) Da ich aber wirklich daran interessiert bin, zu verstehen, wie der Code zustande kommt, hilft mir ein vollständiger TR der alles kann nicht weiter, da es viel zu kompliziert für mich ist;) Ich mache das hier auch nicht weil es eine Hausaufgabe oder ähnliches ist, sondern rein aus privatem Interesse.

    Crueser7 schrieb:

    Ich mache das hier auch nicht weil es eine Hausaufgabe oder ähnliches ist, sondern rein aus privatem Interesse.
    Spitzen Einstellung! :thumbup:
    So wird das auf jeden Fall was!!! Weiter so :D

    Joa, der Link, da gibst du einen ganzen Term an, und der "sucht" sich das raus. Musst du noch nicht verstehen,
    lass den Link jedoch mal irgendwo gespeichert, vll braust du den.


    Edit://
    Gewünschtes Vorgehen:

    1. Zahl 1 eingeben
    2. + - / oder * drücken
    3. Zahl 2 eingeben
    4. auf = drücken
    5. Ergebnis bekommen
    Relativ Simple,
    Da ganze kannst du mit einer kleinem IF-Abfrage bewerkstelligen.
    Ebenfalls wäre Select Case auch noch möglich.
    Mfg: Gather
    Private Nachrichten bezüglich VB-Fragen werden Ignoriert!


    n1nja schrieb:

    Mach doch Radio Buttons oder nimm eine Textbox und überprüf welche Zeichen vorkommen!

    So kannst dann auch so zb rechnen: 3 + 5 - 1


    Das klingt nach einer guten Idee, müsste ich dann mit checked true/false das richtige Rechenzeichen hinbekommen. Ich probier es mal aus, vielen Dank.

    Hmm, da ich nur jede 30 Minuten was neues Posten darf, muss ich nun hier mal editieren.
    Habe mich an dem Vorschlag mit den Radio Buttons versucht, allerdings gibt meine nette Umgebung mir immer Syntaxfehler aus:

    VB.NET-Quellcode

    1. Private Sub cmdErgebnis_Click(sender As Object, e As EventArgs) Handles cmdErgebnis.Click
    2. Dim zahl1, zahl2 As String
    3. Try
    4. If RadioButton1.Checked = True Then
    5. zahl1 = Convert.ToDouble(txtZahl1.Text)
    6. zahl2 = Convert.ToDouble(txtZahl2.Text)
    7. lblErgebnis.Text = zahl1 + zahl2
    8. ElseIf
    9. RadioButton2.Checked = True
    10. then
    11. zahl1 = Convert.ToDouble(txtZahl1.Text)
    12. zahl2 = Convert.ToDouble(txtZahl2.Text)
    13. lblErgebnis.Text = zahl1 - zahl2
    14. ElseIf
    15. RadioButton3.Checked = True
    16. then
    17. zahl1 = Convert.ToDouble(txtZahl1.Text)
    18. zahl2 = Convert.ToDouble(txtZahl2.Text)
    19. lblErgebnis.Text = zahl1 * zahl2
    20. Else
    21. zahl1 = Convert.ToDouble(txtZahl1.Text)
    22. zahl2 = Convert.ToDouble(txtZahl2.Text)
    23. lblErgebnis.Text = zahl1 / zahl2
    24. End If
    25. Catch ex As Exception
    26. End Try


    Was ich beschreiben wollte, war die Tatsache, dass wenn Radio Button 1 checked ist, er die zahl1 und zahl2 rechnen und in lblErgebnis ausgeben soll.
    Das möchte er so leider nicht annehmen. Wäre dankbar für Ratschläge.

    mfg

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

    Es heißt auch ElseIf Radiobutton2.checked = true Then (In der selben Zeile)
    Und nicht:

    VB.NET-Quellcode

    1. ElseIf
    2. RadioButton3.Checked = True

    Edit://
    Ich lege dir zu Herzen, ließ ein Grundlagen Buch.
    Welches? Schau einfach im Forum das wurde schon oft gefragt ;)
    Mfg: Gather
    Private Nachrichten bezüglich VB-Fragen werden Ignoriert!


    Okay, danke, wusste nicht das die Formatierung wichtig ist.
    Bevor ich mir ein Buch darüber kaufe, wollte ich ersteinmal schauen, ob
    vb mich auch einigermaßen anspricht, aber ich merke, das ich mir wirklich
    erstmal einige Grundlagen aneignen sollte. Aber der Taschenrechner funktioniert
    erstmal, vielen Dank dafür.

    mfg
    Das Buch ist kostenlos :D
    Also die Bucher (die Guten)
    Mfg: Gather
    Private Nachrichten bezüglich VB-Fragen werden Ignoriert!


    Warum kommen diese Zeilen in Deiner Prozedur 4 Mal vor?

    Crueser7 schrieb:

    VB.NET-Quellcode

    1. zahl1 = Convert.ToDouble(txtZahl1.Text)
    2. zahl2 = Convert.ToDouble(txtZahl2.Text)
    Ist es nicht sinnvoll, den Textboxen eine Double-Property zuzuordnen, in denen bereits die konvertierten Werte drin stehen?
    Oder Du nimmst statt der TextBoxen gleich ein NumericUpDown, da kommen Zahlen im Decimal-Format raus, mit denen kannst Du genauso gut wie mit Double rechnen oder Du konvertierst sie per CDbl(x) nach Double.
    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!