Almetare
1.15
Alle meine Taschenrechner - Eine C++-Bibliothek zur Entwicklung von Taschenrechnern
|
Basisklasse fuer die Operatoren. Mehr ...
#include <symbols.h>
Öffentliche Methoden | |
SymOperator (string op="", int prio=2, string hlp="no help available") | |
int | getPrio () const |
void | processCommon () |
Prozessiert einen eingegebenen Operator. Mehr ... | |
void | processAddSub () |
Prozessiert "+" und "-". Mehr ... | |
void | processAddSubCasioSci () |
Prozessiert "+" und "-". Mehr ... | |
SymOperator * | checkConstMode (const SymOperator *lastSymP) const |
virtual Number | calcVal (const Number &a, const Number &b)=0 |
![]() | |
Symbol (string sym="", string hlp="no help available") | |
string | getSym () const |
string | getHlp () const |
virtual void | process ()=0 |
Geschützte Attribute | |
int | mPrio |
![]() | |
string | mSym |
das Symbol als String ("+", "sto", ...) | |
string | mHlp |
kurzer Hilfetext | |
Weitere Geerbte Elemente | |
![]() | |
static void | setCompP (ComputerBase *cP) |
static void | setDsplP (DisplayBase *cP) |
![]() | |
static Symbol * | getLastInP () |
Liefert das letzte eingegebene Symbol zurueck. Mehr ... | |
static Symbol * | getLastOpP () |
Liefert das letzte eingegebene Operator-Symbol zurueck. Mehr ... | |
static Symbol * | getLastButOneOpP () |
Liefert das vorletzte eingegebene Operator-Symbol zurueck. Mehr ... | |
![]() | |
static ComputerBase * | mCompP |
Zeiger auf Computer mit der Symboltabelle. | |
static DisplayBase * | mDsplP |
Zeiger auf Display (f. wissenschftl. Rechner) | |
Basisklasse fuer die Operatoren.
void SymOperator::processAddSub | ( | ) |
Prozessiert "+" und "-".
Hier ist ein Sonderfall implementiert: Wenn unmittelbar vor Eingabe des Operators eine Prozentrechnung ausgefuehrt wurde, wird sofort ein Aufschlag oder Abschlag berechnet. Beispiel: "100*3%+" ergibt sofort 103, ohne dass "=" gedrueckt werden muesste. Nach dem "%" steht im Zahlen-Stack nur die 3. In AcPrc::process() wurde in mPrcWhole die 100 gespeichert. Diese beiden Operanden werden in der richtigen Reihenfolge auf den Stack gebracht, "+" oder "-" auf den Symbol- Stack und OthEqu::process() ausgefuehrt.
void SymOperator::processAddSubCasioSci | ( | ) |
Prozessiert "+" und "-".
Hier ist ein Sonderfall implementiert: Wenn unmittelbar vor Eingabe des Operators eine Prozentrechnung ausgefuehrt wurde, wird sofort ein Aufschlag oder Abschlag berechnet. Beispiel: "100*3%+" ergibt sofort 103, ohne dass "=" gedrueckt werden muesste. Nach dem "%" steht im Zahlen-Stack nur die 3. In AcPrc::process() wurde in mPrcWhole die 100 gespeichert. Diese beiden Operanden werden in der richtigen Reihenfolge auf den Stack gebracht, "+" oder "-" auf den Symbol- Stack und OthEqu::process() ausgefuehrt.
void SymOperator::processCommon | ( | ) |
Prozessiert einen eingegebenen Operator.
Wenn der Symbolstack leer ist, wird der Operator einfach auf den Stack gelegt. Wenn nicht, muss erst ueberprueft werden, ob der vorherige Operator hoehere oder gleiche Prioritaet hat; falls ja, wird diese Operation zuerst ausgefuehrt; daraufhin ist ggf. ein neuer Operator oben, mit dem der Vergleich rekursiv erneut durchgefuehrt wird.