Problem beim erstellen eines Taschenrechners

  • VB.NET

Es gibt 27 Antworten in diesem Thema. Der letzte Beitrag () ist von Luca.

    Problem beim erstellen eines Taschenrechners

    Hallo zusammen,

    damit ich das Programmieren lerne habe ich ein Projekt "Rechner" angefangen. doch da habe ich noch eine Problem.
    ich habe eine Form Erstellt mit einer Textbox und Schaltflächen (1-9, +, -, *, /) wie mache ich das dass die zahlen addiert werden wenn ich auf die Schaltfläche "+" clicke?
    ich kann zwar das Letzte zeichen auslesen aber das hilft mir leider nicht weiter

    hab ihr da ein paar tipps für mich,


    das habe ich biss jetzt:

    Quellcode

    1. Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
    2. TextBox1.Text = TextBox1.Text & 1
    3. ' hier lese ich das letzte zeichen in der Textbox aus
    4. Dim zeichen As String
    5. Dim count As Integer
    6. For Each zeichen In TextBox1.Text
    7. count += 1
    8. Next
    9. End Sub


    danke schon mal im vorraus

    Gruß
    Phaethon
    Option Strict On - ganz wichtig damit du auch lernst richtig mit Datentypen umzugehen.
    Außerdem schreibe den Code bitte mit dem richtigen BB-Code. (VB.net, nicht Quelltext)

    Das ganze könntest du so machen:
    Du bestimmst was derjenige machen möchte (+,-,etc) und speicherst das zwischen. Das ganze führst du dann beim Klick auf = aus. Wenn keine zweite Zahl angeben wurde hinter dem operator gibst du halt nur die erste Zahl zurück.

    Kann das leider nicht explizit selber probieren, da ich am tablet bin. Könnte daher ein wenig unverständlich sein wie auch das versuchte zu erklären. :D
    Es existiert ein Interesse an der generellen Rezession der Applikation relativ primitiver Methoden komplimentär zur Favorisierung adäquater komplexer Algorithmen.
    ------------------------------------------------------------------------------------
    Rising Existence - das GTA V-MP Projekt mit Zukunft und Innuvation
    Meinst du Option Strict On?
    In den Projekteigenschaften ist das direkt auf der ersten Seite. Einfach Option Strict auf "On" stellen.
    Es existiert ein Interesse an der generellen Rezession der Applikation relativ primitiver Methoden komplimentär zur Favorisierung adäquater komplexer Algorithmen.
    ------------------------------------------------------------------------------------
    Rising Existence - das GTA V-MP Projekt mit Zukunft und Innuvation
    zurzeit ist das so dass z.B. wenn ich die Schaltfläche "1" drücke die 1 in der Textbox erscheint. wenn ich die Schaltfläche "+" drücke dann kommt ein +-zeichen
    ich muss ja dem ganzen sagen das die zahlen vor dem + eine ganze zahl ist.

    habe jetzt option Stict auf on

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

    Falls kein anderer hier dir bis morgen eine Lösung geben kann werde ich es mal morgen mittag am PC selber probieren.
    Es existiert ein Interesse an der generellen Rezession der Applikation relativ primitiver Methoden komplimentär zur Favorisierung adäquater komplexer Algorithmen.
    ------------------------------------------------------------------------------------
    Rising Existence - das GTA V-MP Projekt mit Zukunft und Innuvation
    Hey ich helfe gerne. Außerdem lerne auch derzeit noch selber, mach dur mal keine sorgen. Hier findest du immer Hilfe. ;)
    Es existiert ein Interesse an der generellen Rezession der Applikation relativ primitiver Methoden komplimentär zur Favorisierung adäquater komplexer Algorithmen.
    ------------------------------------------------------------------------------------
    Rising Existence - das GTA V-MP Projekt mit Zukunft und Innuvation
    Das aus meiner Sicht idealste wäre, einen Formelparser zu benutzen (am besten sogar selbst programmiert, ansonsten kannst du einen hier ausm Forum oder von woanders nehmen), um das Ergebnis des von dir zusammengesetzten String zu berechnen.
    so hab jetzt einen Lösungsansatz aber der ist nicht wirklich gut :(

    VB.NET-Quellcode

    1. Dim zeichen2 As String
    2. Dim count2 As Integer
    3. For Each zeichen2 In TextBox1.Text
    4. count2 += 2
    5. Next
    6. Dim zeichen1 As String
    7. Dim count1 As Integer
    8. For Each zeichen1 In TextBox1.Text
    9. count1 -= 1
    10. Next
    11. Dim zeichen As String
    12. Dim count As Integer
    13. For Each zeichen In TextBox1.Text
    14. count += 1
    15. If zeichen = "+" Then TextBox1.Text = Val(zeichen1) + Val(zeichen2)
    16. If zeichen = "-" Then TextBox1.Text = Val(zeichen1) - Val(zeichen2)
    17. If zeichen = "*" Then TextBox1.Text = Val(zeichen1) * Val(zeichen2)
    18. If zeichen = "/" Then TextBox1.Text = Val(zeichen1) / Val(zeichen2)
    19. Next


    so wird es zwar berechnet aber bei manchen ist das Ergebnis falsch wiso ist das so?

    Phaethon schrieb:

    einen Lösungsansatz
    Schmeiß zunächst Deinen ganzen Code weg und beende das Studio.
    Dann nimmst Du Dir einen Zettel, meinetwegen in Word, startest den Calculator und schreibst auf, was genau beim Drücken jeder (vorhandenen) Taste passieren soll.
    Dies überprüfst Du und machst ein "Experiment" auf einem weiteren Blatt Papier, wa sollten alle Tasten mindestens zwei Mal in unterschiedlicher Reihenfolge vorkommen.
    Wenn dann Dein Plan ordentlich formuliert ist, kannst Du ihn praktisch ohne Hilfe in Code gießen. Programmier dann genau das, was da steht, keine weitere Funktionalität, die nicht beschrieben ist. Die kommt dann in Version 2 dran. :thumbsup:
    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!
    das verstehe ich jetzt nicht ganz.....
    soll ich da aufschreiben das 1+1 = 2 ist oder wie darf ich das Verstehen?
    tut mir leid aber ich tue mich da noch eine bisschen schwer mit dem Programmieren, zumindest in Visual Basic..... Hab mich in VBA bisher etwas leichter getan
    Dein Taschenrechner braucht doch einen Ablaufplan, damit er weiß, dass Du etwas berechnet haben willst. Nämlich die Summe aus dem was links vom "+" steht und dem was rechts vom "+" steht (in Deinem Beispiel).
    Dein Programm muss aber auch Fehleingaben erkennen können oder sogar einfach nicht zulassen. Wegen mir darf als erstes Zeichen eine Ziffer, Plus und Minus eingegeben werden, aber kein "/" oder "*".
    Programmablaufplan oder was weiß ich. Nur ohne zu wissen wie Du das Problem lösen willst wirst Du Dein selbtsgestecktes Ziel nie erreichen.
    Schön, aber Du musst halt weiter denken, das ist ja ein möglicher Anfang.
    Letztendlich musst Du Deinem Programm alles Beibringen, was Du von ihm erwartest, je nachdem welche Taste Du drückst. So habe ich jedenfalls Rods Ansatz verstanden.
    Bei einem Formelparser, wie Nafets ihn vorschlägt, kann (nicht muss) man eine andere Strategie fahren. Da kann man mit dem Auswerten der kompletten Eingabe warten, bis die "Ergebnis"-Taste gedrückt wird.
    Der Formelparser auf meinem Smartphone versucht jedes eingegebe Zeichen sofort zu interpretieren und es ändert sich dem entsprechend die Anzeige.

    Du musst erst einmal wissen, wie Dein Rechner aussehen soll. Welche mathematischen Funktionen er lösen können soll und welche nicht (Klammerrechnung? UPN?).
    Dann musst Du Dir eine Strategie überlegen, ob die komplette Eingabe geparst werden soll oder Zeichen für Zeichen, und so weiter.
    Das alles zunächst als Gedanken zu Papier gebracht. Eine Leistungsbeschreibung erstellen, dann einen Programmablaufplann erstellen.

    Das sind nur meine Gedanken dazu, mach es wie Du es für richtig hältst. Aber mit den merkwürdigen Codefetzen von weiter oben wirst Du nie das Ziel erreichen.
    Sorry ich weiss das ich ein schwieriger Fall bin.......
    naja ich weiss wie der Rechner aussehen soll, und was er am Anfang können soll.
    mit dem code der oben steht funktioniert das auch nur eben nicht so wie es soll .... wenn ich da z.B. 2+2 rechne sind es 4 aber wenn ich 2+3 rechne dann kommt 6 dabei raus.... das Verstehe ich nicht

    tut mir nochmals wirklich leid aber machmal brauche ich einige zeit um zu merken das ich aufm Holzweg bin .... also bitte ein bisschen geduld mit mir haben ;)

    Phaethon schrieb:

    funktioniert das auch nur eben nicht so wie es soll
    weil der Plan in Deinem Kopf nicht mit Deinem Grützencode übereinstimmt.
    Zurück zu Post #12.
    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!