23 #error calc_sci.h is only for C++! 34 enum 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 =
"");
249 Number calcVal(
const Number& a) {
return exp(a.getVal()); }
260 Number calcVal(
const Number& a) {
return log(a.getVal()); }
271 Number calcVal(
const Number& a) {
return pow(10.0, a.getVal()); }
282 Number calcVal(
const Number& a) {
return log10(a.getVal()); }
292 explicit SymTrigFunction(
string sym =
"",
string hlp =
"no help available")
308 Number calcVal(
const Number& a) {
return sin(a.getVal()); }
319 Number calcVal(
const Number& a) {
return asin(a.getVal()); }
330 Number calcVal(
const Number& a) {
return cos(a.getVal()); }
341 Number calcVal(
const Number& a) {
return acos(a.getVal()); }
353 Number calcVal(
const Number& a) {
return tan(a.getVal()); }
364 Number calcVal(
const Number& a) {
return atan(a.getVal()); }
385 AcHyp() :
SymAction(
"hyp",
"set/reset hyperbolicus mode for trig. functions") {}
407 AcDeg() :
SymAction(
"deg",
"degree mode (trigonometric functions)") {}
408 void process() { static_cast<ComputerSci*>(
mCompP)->setAngMode(DEG); }
418 AcRad() :
SymAction(
"rad",
"radian mode (trigonometric functions)") {}
419 void process() { static_cast<ComputerSci*>(
mCompP)->setAngMode(RAD); }
429 AcGra() :
SymAction(
"gra",
"grad mode (trigonometric functions)") {}
430 void process() { static_cast<ComputerSci*>(
mCompP)->setAngMode(GRA); }
452 AcSci() :
SymAction(
"sci",
"scientific display mode ('sci@4')") {}
475 AcFrc() :
SymAction(
"frc",
"fraction display mode (if number is fraction)") {}
476 void process() { static_cast<DisplaySci*>(
mDsplP)->setFrcMode(FRC); }
485 AcMix() :
SymAction(
"mix",
"mixed fraction display mode (if number is fraction)") {}
486 void process() { static_cast<DisplaySci*>(
mDsplP)->setFrcMode(MIX); }
497 void process() { static_cast<DisplaySci*>(
mDsplP)->setFrcMode(STD); }
507 static int mShiftNumMax;
511 explicit AcShiftPoint(
string sym =
"",
string hlp =
"no help available")
559 double expemx (
double x)
const {
double ret = exp(x) + exp(-x);
return ret;}
560 double exmemx (
double x)
const {
double ret = exp(x) - exp(-x);
return ret;}
561 double sqrtx2p1 (
double x)
const {
return sqrt(x*x+1.0) ; }
562 double sqrtx2m1 (
double x)
const {
return sqrt(x*x-1.0) ; }
576 Number calcVal(
const Number& a) {
double x = a.getVal();
return 0.5 * exmemx(x); }
587 Number calcVal(
const Number& a) {
double x = a.getVal();
return log(x + sqrtx2p1(x)); }
598 Number calcVal(
const Number& a) {
double x = a.getVal();
return 0.5 * expemx(x); }
609 Number calcVal(
const Number& a) {
double x = a.getVal();
return log(x + sqrtx2m1(x)); }
620 Number calcVal(
const Number& a) {
double x = a.getVal();
return exmemx(x) / expemx(x); }
631 Number calcVal(
const Number& a) {
double x = a.getVal();
return 0.5 * log((1.0+x)/(1.0-x)); }
638 #endif // !CALC_SCI_H void process()
Setzt Display-Modus auf FIX.
Definition: calc_sci.cpp:596
Basisklasse aller Funktionen.
Definition: symbols.h:241
Tangens hyperbolicus.
Definition: calc_sci.h:616
Quadrierfunktion.
Definition: calc_sci.h:234
DspMode
Winkelmodus Altgrad, Neugrad oder Rad.
Definition: calc_sci.h:35
Exponentialfunktion.
Definition: calc_sci.h:245
virtual void setModes()
Schaut im Computer, welche Modes gesetzt sind, und baut den Mode-String des Displays entsprechend zus...
Definition: calc_sci.cpp:247
Basisklasse fuer die hyperbolischen Winkelfunktionen.
Definition: calc_sci.h:556
double radToDegOrGra(double ang) const
Wandelt einen Winkel vom Bogenmass in Altgrad oder Neugrad um.
Definition: calc_sci.cpp:500
bool mIsInv
Invers-Modus.
Definition: calc_sci.h:52
bool mIsFixInput
fix wurde gedrueckt, jetzt wird auf Ziffer gewartet
Definition: calc_sci.h:54
static ComputerBase * mCompP
Zeiger auf Computer mit der Symboltabelle.
Definition: symbols.h:51
Schaltet Rechner in wissenschaftlichen Anzeigemodus (SCI).
Definition: calc_sci.h:449
Arcuscosinus-Funktion.
Definition: calc_sci.h:337
void setAngMode(AngMode am)
Setzt die Winkelmodus-Strings.
Definition: calc_sci.cpp:278
Sinus-Funktion.
Definition: calc_sci.h:304
Areatangens hyperbolicus.
Definition: calc_sci.h:627
Cosinus hyperbolicus.
Definition: calc_sci.h:594
void process()
Setzt Invers-Modus.
Definition: calc_sci.cpp:519
Schaltet Rechner in Bruchdarstellungsmodus.
Definition: calc_sci.h:472
void process()
Prozessiert alle Winkelfunktions-Symbole.
Definition: calc_sci.cpp:441
Areasinus hyperbolicus.
Definition: calc_sci.h:583
void process()
Verschiebt Dezimalpunkt der Anzeige so nach links, dass der Exponent ein Vielfaches von 3 ist.
Definition: calc_sci.cpp:677
Verschiebt bei wissenschaftlicher Darstellung das Komma der Mantisse um drei Stellen nach links.
Definition: calc_sci.h:545
double DegOrGraToRad(double ang) const
Wandelt einen Winkel von Neugrad oder Altgrad ins Bogenmass um.
Definition: calc_sci.cpp:478
ComputerSci()
Der Konstruktor fuegt der Symboltabelle die zusaetzlichen Symbole fuer wissenschaftliche Taschenrechn...
Definition: calc_sci.cpp:40
void setDspMode(DspMode dm)
Setzt die Display-Modus-Strings.
Definition: calc_sci.cpp:294
void process()
Verschiebt Dezimalpunkt der Anzeige so nach links, dass der Exponent ein Vielfaches von 3 ist.
Definition: calc_sci.cpp:665
Allgemeine Potenz.
Definition: calc_sci.h:163
string makeCompSciInfoStr()
Erzeugt String mit den wichtigen Member-Variablen.
Definition: calc_sci.cpp:206
Cosinus-Funktion.
Definition: calc_sci.h:326
bool mIsSciInput
sci wurde gedrueckt, jetzt wird auf Ziffer gewartet
Definition: calc_sci.h:55
Schaltet Rechner in Konstanten-Modus.
Definition: calc_sci.h:393
void process()
Setzt Konstanten-Modus.
Definition: calc_sci.cpp:545
void processCommon()
Prozessiert einen eingegebenen Operator.
Definition: symbols.cpp:255
Display fuer wissenschaftliche Taschenrechner.
Definition: calc_sci.h:95
Natuerlicher Logarithmus.
Definition: calc_sci.h:256
Klasse zum Rechnen mit Bruechen.
Definition: fraction.h:84
void addSciSymsToSymTab()
Funktion fuegt der Symboltabelle die zusaetzlichen Symbole fuer wissenschaftliche Taschenrechner hinz...
Definition: calc_sci.cpp:52
Basisklasse der Nicht-Winkelfunktionen.
Definition: symbols.h:252
void process()
Setzt Display-Modus auf SCI.
Definition: calc_sci.cpp:571
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
void process()
Setzt Display-Modus auf NRM.
Definition: calc_sci.cpp:556
virtual void handlePercent()
Prozentrechnung des Solar-Rechners:
Definition: calc_sci.h:79
Verschiebt bei wissenschaftlicher Darstellung das Komma der Mantisse.
Definition: calc_sci.h:504
virtual bool preProcess(string &in)
Funktion erlaubt es, ein Symbol vor der eigentlichen Verarbeitung zu veraendern.
Definition: calc_sci.cpp:106
Schaltet Bruchdarstellung wieder aus.
Definition: calc_sci.h:493
Schaltet Rechner in Rad-Modus (Kreis ist in 2 pi rad eingeteilt).
Definition: calc_sci.h:415
Kreiszahl pi.
Definition: calc_sci.h:152
static double root(double x, double y)
Berechnet x^(1/y).
Definition: util.cpp:1008
Die Klasse Number repraesentiert Zahlen.
Definition: number.h:48
bool mIsHyp
Hyperbolicus.
Definition: calc_sci.h:53
Schaltet Rechner in Neugrad-Modus (Kreis ist in 400 Neugrad eingeteilt).
Definition: calc_sci.h:426
Modulo-Operator.
Definition: calc_sci.h:187
Basisklasse fuer die Operatoren.
Definition: symbols.h:103
Basisklasse fuer alle Aktionen ("=", "%", ...).
Definition: symbols.h:277
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
Arcustangens-Funktion.
Definition: calc_sci.h:360
Tangens-Funktion.
Definition: calc_sci.h:348
Allgemeine Funktionen (Modul lib)
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
Bruchdarstellung: Fliesskomma, Bruch, gemischter Bruch.
Definition: calc_sci.h:47
Basisklassen fuer alle Taschenrechner (Modul base)
Allgemeine Wurzel.
Definition: calc_sci.h:175
static DisplayBase * mDsplP
Zeiger auf Display (f. wissenschftl. Rechner)
Definition: symbols.h:52
FrcMode
Anzeige: normal, exponential, Festkomma.
Definition: calc_sci.h:36
Basisklasse aller Displays.
Definition: calculator.h:189
Schaltet Rechner in Hyperbolicus-Modus.
Definition: calc_sci.h:382
Reziprokwert.
Definition: calc_sci.h:223
Zehnerlogarithmus.
Definition: calc_sci.h:278
Basisklasse fuer Zahlen.
Definition: symbols.h:73
Basisklasse fuer Winkelfunktionen.
Definition: calc_sci.h:289
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:689
Areacosinus hyperbolicus.
Definition: calc_sci.h:605
void setModesSci()
Setzt die Modus-Strings auf die eingestellten Werte.
Definition: calc_sci.cpp:260
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
DisplaySci(ComputerBase *cbP)
Initialisiert das Display.
Definition: calc_sci.cpp:231
void process()
Setzt Hyperbolikus-Modus.
Definition: calc_sci.cpp:532
Basisklasse aller Computer.
Definition: calculator.h:84
AngMode mAngMode
Modus RAD, DEG, GRA.
Definition: calc_sci.h:56
Schaltet Rechner in "normalen" Anzeigemodus (weder FIX noch SCI).
Definition: calc_sci.h:437
void process()
Verschiebt Dezimalpunkt der Anzeige um die Anzahl von Stellen, die im Parameter uebergeben wird.
Definition: calc_sci.cpp:622
bool mapHypSci(string &sym)
Ordnet einem Symbol dasjenige Symbol zu, das ihm im Hyperbolicus-Modus entspricht (sin -> sinh,...
Definition: calc_sci.cpp:159
Schaltet Rechner in Anzeigemodus "gemischter Bruch".
Definition: calc_sci.h:482
Verschiebt bei wissenschaftlicher Darstellung das Komma der Mantisse.
Definition: calc_sci.h:521
Schaltet Rechner in Invers-Modus.
Definition: calc_sci.h:371
Schaltet Rechner in Altgrad-Modus (Kreis ist in 360° eingeteilt).
Definition: calc_sci.h:404
void process()
Prozessiert das pi-Symbol. Pi wird berechnet und auf den Stack geworfen.
Definition: calc_sci.cpp:423
Verschiebt bei wissenschaftlicher Darstellung das Komma der Mantisse um drei Stellen nach rechts.
Definition: calc_sci.h:533
Number calcVal(const Number &a)
Berechnet den Reziprokwert der Zahl a.
Definition: calc_sci.cpp:397
Schaltet Rechner in Festkommamodus (FIX).
Definition: calc_sci.h:461
Arcussinus-Funktion.
Definition: calc_sci.h:315
Potenzen zur Basis 10.
Definition: calc_sci.h:267
Sinus hyperbolicus.
Definition: calc_sci.h:572
Kleinstes gemeinsames Vielfaches.
Definition: calc_sci.h:211
Groesster gemeinsamer Teiler.
Definition: calc_sci.h:199