Taschenrechner Problem
-
Hallo ich versuche mich letzte Zeit mit dem Borland C++ Builder 6 zurecht zu finden, ich wollte jetzt einen Taschenrechner erstellen der ähnlich wie der Windows Taschenrechner aufgebaut ist.
Ich habe dazu die verschiedenen Buttons (1,2,3,4,5,6,7,8,9,0,+,-,*,/,)
Dann habe ich noch die Zahl1, und die Zahl2 als int Wert definiert.
Ich weiß jetzt aber nicht wie ich den Buttons sagen soll das man erst die Zahl1 klicken soll, dann das Rechenzeichen und dann noch Zahl2.
Bei meinen bisherigen Versuchen wurd dann immer nur die Zahl1 überschrieben!
Das Ergebnis soll dann wahrscheinlich auch in einem Label angezeigt werden was aber glaub nicht das Problem ist, da ich dann das Ergebnis als "int Ergebnis" noch definieren werde und dann die Caption des Labels in das Ergebnis anzeigen lasse.Weiß nun einer wie ich mein Problem mit dem Zahl1 und Zahl2 lösen kann?
Gruß
Manuh
-
Ich würde die Eingabe in TEdit machen (auch wenn die Buttons zur Eingabe verwendet werden) und die Eingabe mittels AnsiString::ToInt(), respektive ToIntDef() erst dann in int wandeln, wenn die Eingabe abgeschlossen ist.
Sprich, wenn eine 'Funktionstaste / -Button gedürckt wurde. Dann kannst du auch leichter eine Undo-Funktion implementieren, um Tippfehler zu korrigieren.Wenn Du das Programm nicht neu machen willst, kannst Du alternativ den bisherigen Wert mit 10 multiplizieren und den 'Wert' des Buttons hinzu addieren.
-
Hallo
Undo dürfte in dem Fall nicht weiterhelfen.
Es muß schon in dem Form eine Membervariable Zahl vom Typ definiert werden. In dieser wird immer das aktuelle Zwischenergebnis gespeichert. Am Anfang jeder Rechnung muß Zahl auf 0 gesetzt werden.
Dann kann mit jedem Operationsbutton der aktuelle Inhalt des Eingabe-Edits mit Zahl verrechnet werden.bis bald
akari
-
Ich würd dein Problem evtl. so angehen:
int modus=0; //modus=0 : Zahl vor dem Rechenzeichen wird eingegeben
//modus=1 : Die dahinter wird eingegeben
int Zahl1,Zahl2; // Speicher für EingabenBeim drücken von Zahlentasten (bzw. Komma oder so) wird die Zahl an den Eingabestr (Editfeld->Text) angehängt. So ist es auch leicht möglich eine Zurücktaste, die die letzte Zahl löscht, zu implementieren.
Beim drücken des Operators, wird nachgeschaut in welchem Modus man sich befindet:
Wenn 0: Speichere den Eingabestr in Zahl1 ab und setzte Modus auf 1
Wenn 1: Verrechne die in Zahl1 gespeicherte Zahl mit dem Eingabestr mit entsprechendem Operator und speicher das Ergebnis in Zahl1.