Anfängerprojekt Taschenrechner

  • C#
  • .NET (FX) 4.5–4.8

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von Akanel.

    Anfängerprojekt Taschenrechner

    Hallo zusammen,

    ich bastel gerade an einem Taschenrechner um einige Sachen besser zu verstehen und ein bisschen Übung mit einigen Sachen zu bekommen.
    Dazu habe ich mir als Projekt einen kleinen Taschenrechner programmiert.
    Die Grundrechenarten funktionieren erstmal. Sprich: +-*/ mit 2 Zahlen(Operanden?)
    Ich habe es möglichst vermieden mit Strings zu rechnen (was ja nicht funktioniert) oder welche zu nutzen um diese dann zu INT DOUBLE oder was auch immer zu konvertieren.
    Stattdessen habe ich direkt den Datentyp decimal genommen.
    Nun möchte ich aber ein Komma eingeben können und weiss nicht wie ich das bewerkstelligen soll. Bei Strings würden mir schon möglichkeiten einfallen, aber nicht bei decimal.

    Kann mir jemand eine möglichkeit nennen? (Bitte keinen fertigen Code)
    Anbei noch das Projekt im bisherigen Zustand (Startk verbesserungswürdig, aber das ist mein Ziel. Nach und nach, learning by doing)
    Dateien
    • Calculator01.zip

      (10,7 kB, 78 mal heruntergeladen, zuletzt: )
    Rechtschreibfehler betonen den künstlerischen Charakter des Autors.
    komisch - dein Projekt ist ein Wpf-Projekt, dieser Thread ist aber nicht als Wpf getaggt.
    Für mich ungewöhnlich ist, dass du scheints kein MVVM anwenden willst.

    Ansonsten fände ich einen String als Eingabe eines Taschenrechners durchaus angemessen.
    Ich sehe einen Taschenrechner quasi als Editor für einen mathematischen Ausdruck.
    Bei [Enter] (oder auch bei [+], [*] etc) wird der Ausdruck geparst, ausgerechnet, und das Ergebnis ausgegeben - meinetwegen auch wieder als String in die Eingabe des Taschenrechner(-Editors).

    Dieses Konzept ermöglicht auch ein schönes Trennen von Zuständigkeiten:
    Man könnte einen vom GUI ganz unabhängigen Expression-Parser programmieren, der Strings entgegennimmt, parst, und Decimal returnt.
    Dieser würde dann bei den genannten bestimmten Tastendrücken vom GUI in Anspruch genommen.

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

    MVVM ist mein späteres Ziel.
    Zuerst muss der Taschenrechner mal „normal“ funktionieren.
    Ich dachte immer es wäre ein nogo wenn man versucht mit Strings zu rechnen.
    Also strings entgegen nehmen, parsen und damit weiter rechnen wäre ok?
    Dann muss ich mein Konzept mal komplett umstellen.
    Rechtschreibfehler betonen den künstlerischen Charakter des Autors.
    "String parsen und ausrechnen" ist nicht gleich "mit Strings rechnen".
    Beim Parsen wird der String in Stückchen (Token) zerteilt, die wiederum in verschiedene Elemente eines Modells des mathematischen Ausdrucks übersetzt werden: zB in Zahlen und Operatoren (es kann aber auch komplizierter werden).
    Wenn das mathematische Modell sich dann ausrechnet, dann rechnet es allerdings mit den Zahlen (nicht mit Strings), die aus den Token gelesen wurden.
    Mein Expression-Parser geht schon über einen Taschenrechner hinaus, indem er beliebig viele Token in einem Ausdruck unterstützt, und Operator-Vorränge beachtet und Kram.
    Für einen einfachen Taschenrechner könnte ein Parser reichen, der nur ein einfaches Modell unterstützt: Zahl - Operator - Zahl.
    Und alles annere als Fehleingabe ablehnt.
    Vielen Dank für deine ausführliche Antwort.
    Ich werde das von dir genannte umsetzen und mich dann wieder melden. Denn ich möchte schon das man auch Sachen wie 3-3*6+2=-13 rechnen kann. Also mehrere Operatoren und Operanden und auch Punkt vor Strichrechnung.
    Rechtschreibfehler betonen den künstlerischen Charakter des Autors.