23#error calc_sci.h is only for C++!
34enum AngMode { DEG, RAD, GRA };
66 bool getIsInv ()
const {
return mIsInv ; }
67 bool getIsHyp ()
const {
return mIsHyp ; }
70 AngMode getAngMode ()
const {
return mAngMode ; }
71 void setIsInv (
bool isOn) {
mIsInv = isOn; }
72 void setIsHyp (
bool isOn) {
mIsHyp = isOn; }
73 void setIsFixInput(
bool isOn) {
mIsFixInput = isOn; }
74 void setIsSciInput(
bool isOn) {
mIsSciInput = isOn; }
75 void setAngMode(AngMode mode = DEG) {
mAngMode = mode; }
80 virtual void aftProcess(
string& in) {
if (in !=
"inv")
mIsInv =
false; }
81 virtual bool map(
string& sym) {
return mapSci(sym); }
83 friend ostream& operator<<(ostream& os,
ComputerSci& c);
116 void resetAngModes() { mDeg = mRad = mGra =
"..."; }
117 void resetDspModes() { mSci = mFix =
"..."; }
118 void setDeg() { resetAngModes(); mDeg =
"DEG"; }
119 void setRad() { resetAngModes(); mRad =
"RAD"; }
120 void setGra() { resetAngModes(); mGra =
"GRA"; }
121 void setSci() { resetDspModes(); mSci =
"SCI"; }
122 void setFix() { resetDspModes(); mFix =
"FIX"; }
123 void setNrm() { resetDspModes(); }
124 void setSci(
bool on) {
if (on) mSci =
"SCI";
else mSci =
"..."; }
127 void setFrcMode(
FrcMode fm ) { mFrcMode = fm ; }
128 void setDigits (
int digits) { mDigits = digits; }
129 void setEng (
int eng ) { mEng = eng ; }
130 void setShiftNum(
int shiftNum) { mShiftNum = shiftNum; }
131 void setSxgMode(
bool isOn) { mIsSxgMode = isOn; }
132 void setForceSci(
double limit) { mForceSci = limit; }
133 int getShiftNum()
const {
return mShiftNum; }
134 int getDigits ()
const {
return mDigits ; }
135 int getEng ()
const {
return mEng ; }
136 double getForceSci()
const {
return mForceSci; }
137 DspMode getDspMode ()
const {
return mDspMode ; }
138 FrcMode getFrcMode ()
const {
return mFrcMode ; }
139 virtual void setInv (
bool on) { mInv = on ?
"INV" :
"..."; }
140 virtual void setHyp (
bool on) { mHyp = on ?
"hyp" :
"..."; }
143 virtual void makeSeven(
string displayStr =
"");
267 Number calcVal(
const Number& a) {
return exp(a.getVal()); }
278 Number calcVal(
const Number& a) {
return log(a.getVal()); }
289 Number calcVal(
const Number& a) {
return pow(10.0, a.getVal()); }
300 Number calcVal(
const Number& a) {
return log10(a.getVal()); }
310 explicit SymTrigFunction(
string sym =
"",
string hlp =
"no help available")
326 Number calcVal(
const Number& a) {
return sin(a.getVal()); }
337 Number calcVal(
const Number& a) {
return asin(a.getVal()); }
348 Number calcVal(
const Number& a) {
return cos(a.getVal()); }
359 Number calcVal(
const Number& a) {
return acos(a.getVal()); }
371 Number calcVal(
const Number& a) {
return tan(a.getVal()); }
382 Number calcVal(
const Number& a) {
return atan(a.getVal()); }
403 AcHyp() :
SymAction(
"hyp",
"set/reset hyperbolicus mode for trig. functions") {}
425 AcDeg() :
SymAction(
"deg",
"degree mode (trigonometric functions)") {}
436 AcRad() :
SymAction(
"rad",
"radian mode (trigonometric functions)") {}
447 AcGra() :
SymAction(
"gra",
"grad mode (trigonometric functions)") {}
470 AcSci() :
SymAction(
"sci",
"scientific display mode ('sci@4')") {}
493 AcFrc() :
SymAction(
"frc",
"fraction display mode (if number is fraction)") {}
503 AcMix() :
SymAction(
"mix",
"mixed fraction display mode (if number is fraction)") {}
525 static int mShiftNumMax;
529 explicit AcShiftPoint(
string sym =
"",
string hlp =
"no help available")
577 double expemx (
double x)
const {
double ret = exp(x) + exp(-x);
return ret;}
578 double exmemx (
double x)
const {
double ret = exp(x) - exp(-x);
return ret;}
579 double sqrtx2p1 (
double x)
const {
return sqrt(x*x+1.0) ; }
580 double sqrtx2m1 (
double x)
const {
return sqrt(x*x-1.0) ; }
594 Number calcVal(
const Number& a) {
double x = a.getVal();
return 0.5 * exmemx(x); }
605 Number calcVal(
const Number& a) {
double x = a.getVal();
return log(x + sqrtx2p1(x)); }
616 Number calcVal(
const Number& a) {
double x = a.getVal();
return 0.5 * expemx(x); }
627 Number calcVal(
const Number& a) {
double x = a.getVal();
return log(x + sqrtx2m1(x)); }
638 Number calcVal(
const Number& a) {
double x = a.getVal();
return exmemx(x) / expemx(x); }
649 Number calcVal(
const Number& a) {
double x = a.getVal();
return 0.5 * log((1.0+x)/(1.0-x)); }
FrcMode
Anzeige: normal, exponential, Festkomma.
Definition: calc_sci.h:36
DspMode
Winkelmodus Altgrad, Neugrad oder Rad.
Definition: calc_sci.h:35
Basisklassen fuer alle Taschenrechner (Modul base)
Schaltet Rechner in Konstanten-Modus.
Definition: calc_sci.h:412
void process()
Setzt Konstanten-Modus.
Definition: calc_sci.cpp:570
Schaltet Rechner in Altgrad-Modus (Kreis ist in 360° eingeteilt).
Definition: calc_sci.h:423
Verschiebt bei wissenschaftlicher Darstellung das Komma der Mantisse.
Definition: calc_sci.h:540
void process()
Verschiebt Dezimalpunkt der Anzeige um die Anzahl von Stellen, die im Parameter uebergeben wird.
Definition: calc_sci.cpp:647
Verschiebt bei wissenschaftlicher Darstellung das Komma der Mantisse um drei Stellen nach links.
Definition: calc_sci.h:564
void process()
Verschiebt Dezimalpunkt der Anzeige so nach links, dass der Exponent ein Vielfaches von 3 ist.
Definition: calc_sci.cpp:702
Verschiebt bei wissenschaftlicher Darstellung das Komma der Mantisse um drei Stellen nach rechts.
Definition: calc_sci.h:552
void process()
Verschiebt Dezimalpunkt der Anzeige so nach links, dass der Exponent ein Vielfaches von 3 ist.
Definition: calc_sci.cpp:690
Schaltet Rechner in Festkommamodus (FIX).
Definition: calc_sci.h:480
void process()
Setzt Display-Modus auf FIX.
Definition: calc_sci.cpp:621
Schaltet Rechner in Bruchdarstellungsmodus.
Definition: calc_sci.h:491
Schaltet Rechner in Neugrad-Modus (Kreis ist in 400 Neugrad eingeteilt).
Definition: calc_sci.h:445
Schaltet Rechner in Hyperbolicus-Modus.
Definition: calc_sci.h:401
void process()
Setzt Hyperbolikus-Modus.
Definition: calc_sci.cpp:557
Schaltet Rechner in Invers-Modus.
Definition: calc_sci.h:390
void process()
Setzt Invers-Modus.
Definition: calc_sci.cpp:544
Schaltet Rechner in Anzeigemodus "gemischter Bruch".
Definition: calc_sci.h:501
Schaltet Rechner in "normalen" Anzeigemodus (weder FIX noch SCI).
Definition: calc_sci.h:456
void process()
Setzt Display-Modus auf NRM.
Definition: calc_sci.cpp:581
Schaltet Rechner in Rad-Modus (Kreis ist in 2 pi rad eingeteilt).
Definition: calc_sci.h:434
Schaltet Rechner in wissenschaftlichen Anzeigemodus (SCI).
Definition: calc_sci.h:468
void process()
Setzt Display-Modus auf SCI.
Definition: calc_sci.cpp:596
Verschiebt bei wissenschaftlicher Darstellung das Komma der Mantisse.
Definition: calc_sci.h:523
void shiftEng(Util::Direction dir)
Verschiebt Dezimalpunkt der Anzeige so nach rechts oder links, dass der Exponent ein Vielfaches von 3...
Definition: calc_sci.cpp:714
Schaltet Bruchdarstellung wieder aus.
Definition: calc_sci.h:512
Basisklasse aller Computer.
Definition: calculator.h:85
Bruchdarstellung: Fliesskomma, Bruch, gemischter Bruch.
Definition: calc_sci.h:48
bool mapHypSci(string &sym)
Ordnet einem Symbol dasjenige Symbol zu, das ihm im Hyperbolicus-Modus entspricht (sin -> sinh,...
Definition: calc_sci.cpp:159
virtual void handlePercent()
Prozentrechnung des Solar-Rechners:
Definition: calc_sci.h:79
bool mapSci(string &sym)
Prueft verschiedene Shift-Ebenen und versucht, das Symbol sym entsprechend anzuupassen.
Definition: calc_sci.cpp:123
bool mapInvSci(string &sym)
Ordnet einem Symbol dasjenige Symbol zu, das ihm im Invers-Modus entspricht.
Definition: calc_sci.cpp:140
AngMode mAngMode
Modus RAD, DEG, GRA.
Definition: calc_sci.h:56
bool mIsHyp
Hyperbolicus.
Definition: calc_sci.h:53
bool mapFixSciInputSci(string &sym)
Macht aus einer Ziffer ein "fix"- oder "sci"-Symbol, wenn zuvor "fix" oder "sci" eingegeben wurde.
Definition: calc_sci.cpp:181
bool mIsSciInput
sci wurde gedrueckt, jetzt wird auf Ziffer gewartet
Definition: calc_sci.h:55
virtual bool preProcess(string &in)
Funktion erlaubt es, ein Symbol vor der eigentlichen Verarbeitung zu veraendern.
Definition: calc_sci.cpp:106
string makeCompSciInfoStr()
Erzeugt String mit den wichtigen Member-Variablen.
Definition: calc_sci.cpp:206
ComputerSci()
Der Konstruktor fuegt der Symboltabelle die zusaetzlichen Symbole fuer wissenschaftliche Taschenrechn...
Definition: calc_sci.cpp:40
bool mIsInv
Invers-Modus.
Definition: calc_sci.h:52
void addSciSymsToSymTab()
Funktion fuegt der Symboltabelle die zusaetzlichen Symbole fuer wissenschaftliche Taschenrechner hinz...
Definition: calc_sci.cpp:52
bool mIsFixInput
fix wurde gedrueckt, jetzt wird auf Ziffer gewartet
Definition: calc_sci.h:54
Basisklasse aller Displays.
Definition: calculator.h:190
Display fuer wissenschaftliche Taschenrechner.
Definition: calc_sci.h:96
void setAngMode(AngMode am)
Setzt die Winkelmodus-Strings.
Definition: calc_sci.cpp:278
void setModesSci()
Setzt die Modus-Strings auf die eingestellten Werte.
Definition: calc_sci.cpp:260
void setDspMode(DspMode dm)
Setzt die Display-Modus-Strings.
Definition: calc_sci.cpp:294
DisplaySci(ComputerBase *cbP)
Initialisiert das Display.
Definition: calc_sci.cpp:231
virtual void setModes()
Schaut im Computer, welche Modes gesetzt sind, und baut den Mode-String des Displays entsprechend zus...
Definition: calc_sci.cpp:247
virtual void makeValue()
Wandelt den Wert in mVal in einen String, aber nur, wenn irgendwelche Aenderungen am Wert oder der Da...
Definition: calc_sci.cpp:314
virtual void makeSeven(string displayStr="")
Erzeugt den String fuer die Sieben-Segment-Anzeige so wie sie der Taschenrechner darstellen wuerde.
Definition: calc_sci.cpp:379
Arcuscosinus-Funktion.
Definition: calc_sci.h:356
Areacosinus hyperbolicus.
Definition: calc_sci.h:624
Arcussinus-Funktion.
Definition: calc_sci.h:334
Areasinus hyperbolicus.
Definition: calc_sci.h:602
Arcustangens-Funktion.
Definition: calc_sci.h:379
Areatangens hyperbolicus.
Definition: calc_sci.h:646
Cosinus-Funktion.
Definition: calc_sci.h:345
Cosinus hyperbolicus.
Definition: calc_sci.h:613
Exponentialfunktion.
Definition: calc_sci.h:264
Natuerlicher Logarithmus.
Definition: calc_sci.h:275
Zehnerlogarithmus.
Definition: calc_sci.h:297
Potenzen zur Basis 10.
Definition: calc_sci.h:286
Reziprokwert.
Definition: calc_sci.h:242
Number calcVal(const Number &a)
Berechnet den Reziprokwert der Zahl a.
Definition: calc_sci.cpp:397
Sinus-Funktion.
Definition: calc_sci.h:323
Sinus hyperbolicus.
Definition: calc_sci.h:591
Quadrierfunktion.
Definition: calc_sci.h:253
Tangens-Funktion.
Definition: calc_sci.h:368
Tangens hyperbolicus.
Definition: calc_sci.h:635
Klasse zum Rechnen mit Bruechen.
Definition: fraction.h:85
long lcm() const
Berechnet das kleinste gemeinsame Vielfache (kgV) des Bruchs.
Definition: fraction.cpp:103
long gcd() const
Berechnet den groessten gemeinsamen Teiler (ggT) des Bruchs.
Definition: fraction.cpp:70
Kreiszahl pi.
Definition: calc_sci.h:153
void process()
Prozessiert das pi-Symbol. Pi wird berechnet und auf den Stack geworfen.
Definition: calc_sci.cpp:448
Die Klasse Number repraesentiert Zahlen.
Definition: number.h:49
Groesster gemeinsamer Teiler.
Definition: calc_sci.h:218
Kleinstes gemeinsames Vielfaches.
Definition: calc_sci.h:230
Modulo-Operator.
Definition: calc_sci.h:206
Allgemeine Potenz.
Definition: calc_sci.h:164
Number calcVal(const Number &a, const Number &b)
Allgemeine Potenz.
Definition: calc_sci.cpp:425
Allgemeine Wurzel.
Definition: calc_sci.h:194
Basisklasse fuer alle Aktionen ("=", "%", ...).
Definition: symbols.h:278
Basisklasse aller Funktionen.
Definition: symbols.h:242
Basisklasse fuer die hyperbolischen Winkelfunktionen.
Definition: calc_sci.h:575
Basisklasse fuer Zahlen.
Definition: symbols.h:74
Basisklasse fuer die Operatoren.
Definition: symbols.h:104
void processCommon()
Prozessiert einen eingegebenen Operator.
Definition: symbols.cpp:255
Basisklasse der Nicht-Winkelfunktionen.
Definition: symbols.h:253
Basisklasse fuer Winkelfunktionen.
Definition: calc_sci.h:308
double DegOrGraToRad(double ang) const
Wandelt einen Winkel von Neugrad oder Altgrad ins Bogenmass um.
Definition: calc_sci.cpp:503
void process()
Prozessiert alle Winkelfunktions-Symbole.
Definition: calc_sci.cpp:466
double radToDegOrGra(double ang) const
Wandelt einen Winkel vom Bogenmass in Altgrad oder Neugrad um.
Definition: calc_sci.cpp:525
static DisplayBase * mDsplP
Zeiger auf Display (f. wissenschftl. Rechner)
Definition: symbols.h:52
static ComputerBase * mCompP
Zeiger auf Computer mit der Symboltabelle.
Definition: symbols.h:51
static double root(double x, double y)
Berechnet x^(1/y).
Definition: util.cpp:1015
Allgemeine Funktionen (Modul lib)