Almetare  1.15
Alle meine Taschenrechner - Eine C++-Bibliothek zur Entwicklung von Taschenrechnern
SymOperator Klassenreferenzabstract

Basisklasse fuer die Operatoren. Mehr ...

#include <symbols.h>

Klassendiagramm für SymOperator:
Symbol OpAdd OpDiv OpGcd OpLcm OpMod OpMul OpNcr OpNpr OpPow OpPr OpRoot OpRp OpSub

Ö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 ...
 
SymOperatorcheckConstMode (const SymOperator *lastSymP) const
 
virtual Number calcVal (const Number &a, const Number &b)=0
 
- Öffentliche Methoden geerbt von Symbol
 Symbol (string sym="", string hlp="no help available")
 
string getSym () const
 
string getHlp () const
 
virtual void process ()=0
 

Geschützte Attribute

int mPrio
 
- Geschützte Attribute geerbt von Symbol
string mSym
 das Symbol als String ("+", "sto", ...)
 
string mHlp
 kurzer Hilfetext
 

Weitere Geerbte Elemente

- Öffentliche, statische Methoden geerbt von Symbol
static void setCompP (ComputerBase *cP)
 
static void setDsplP (DisplayBase *cP)
 
- Geschützte, statische Methoden geerbt von Symbol
static SymbolgetLastInP ()
 Liefert das letzte eingegebene Symbol zurueck. Mehr ...
 
static SymbolgetLastOpP ()
 Liefert das letzte eingegebene Operator-Symbol zurueck. Mehr ...
 
static SymbolgetLastButOneOpP ()
 Liefert das vorletzte eingegebene Operator-Symbol zurueck. Mehr ...
 
- Statische, geschützte Attribute geerbt von Symbol
static ComputerBasemCompP
 Zeiger auf Computer mit der Symboltabelle.
 
static DisplayBasemDsplP
 Zeiger auf Display (f. wissenschftl. Rechner)
 

Ausführliche Beschreibung

Basisklasse fuer die Operatoren.

Dokumentation der Elementfunktionen

◆ processAddSub()

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.

◆ processAddSubCasioSci()

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.

◆ processCommon()

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.


Die Dokumentation für diese Klasse wurde erzeugt aufgrund der Dateien: