Almetare 1.20
Alle meine Taschenrechner - Eine C++-Bibliothek zur Entwicklung von Taschenrechnern
calc_casio_sci.h
gehe zur Dokumentation dieser Datei
1//******************************************************************************
2// Copyright (c) 2002-2004 by Friedemann Seebass, Germany.
3// Dieses Programm ist freie Software. Siehe GNU GPL Notiz in Datei main.cpp.
4// This program is free software. See the GNU GPL notice in file main.cpp.
5// Projekt: Almetare - Alle meine Taschenrechner
6//******************************************************************************
10//******************************************************************************
11// Wann Wer Was
12// ---------- -------- ---------------------------------------------------------
13// 05.09.2004 fse class ComputerCasioSci: neue Members mSdDat, mLrDat
14// 17.03.2003 fse Trennzeichen '#' bei Parametern durch '@' ersetzt. Siehe
15// Kommentar in calculator.cpp
16// 09.04.2002 fse erzeugt
17//******************************************************************************
18
19#ifndef CALC_CASIO_SCI_H
20#define CALC_CASIO_SCI_H
21
22#ifndef __cplusplus
23#error calc_casio_sci.h is only for C++!
24#endif
25
26//******************************************************************************
27
28#include "calc_sci.h"
29
30//******************************************************************************
31
32enum CalcMode { CMP, SD, LR };
33
34class DisplayCasioSci;
35
36//******************************************************************************
37// Klasse ComputerCasioSci: Casio-Taschenrechner:
38//******************************************************************************
39
41// fse, 05.09.04: neue Members mSdDat und mLrDat
42
44{
46 bool mapInvCasioSci (string& sym);
47 bool mapModeCasioSci(string& sym);
48protected:
50 bool mIsMode;
55 CalcMode mCalcMode;
57 string mSdDat;
58 string mLrDat;
59 bool mapCasioSci(string& sym);
60 bool mapKinKoutInputCasioSci(string& sym);
61public:
63 bool getIsMode () const { return mIsMode; }
64 bool getIsKinInput () const { return mIsKinInput; }
65 bool getIsKoutInput() const { return mIsKoutInput; }
66 bool getIsXkInput () const { return mIsXkInput; }
67 Number getKmem(int idx) const { return mKmem[idx]; }
68 CalcMode getCalcMode () const { return mCalcMode; }
69 Number getXdata () const { return mXdata; }
70 string getSdDat () const { return mSdDat; }
71 string getLrDat () const { return mLrDat; }
72 void setKmem(const int idx, const Number& num) { mKmem[idx] = num; }
73 void setIsMode (bool isOn = false) { mIsMode = isOn; }
74 void setIsKinInput (bool isOn) { mIsKinInput = isOn; }
75 void setIsKoutInput(bool isOn) { mIsKoutInput = isOn; }
76 void setIsXkInput (bool isOn) { mIsXkInput = isOn; }
77 void setCalcMode(CalcMode cm) { mCalcMode = cm; }
78 void setXdata(Number x) { mXdata = x; }
79 void setSdDat(const string& dat) { mSdDat = dat; }
80 void setLrDat(const string& dat) { mLrDat = dat; }
81 Number calcA() const;
82 Number calcB() const;
83 Number calcR() const;
87 void handlePercent();
88 void popNumDepOnLastSym();
90 void aftProcess(string& in);
92 virtual string makeCompInfoStr() { return makeCompCasioSciInfoStr(); }
93 friend ostream& operator<<(ostream& os, ComputerCasioSci& c);
94};
95
96//******************************************************************************
97// Klasse DisplayCasioSci:
98//******************************************************************************
99
101
103{
104 ComputerCasioSci* mCompP;
105
106// string getReducedStr(string& src, int numOfOs, int& digits);
107// bool isWithLeadingOs(string& numStr, int numOfOs);
108protected:
109 string mModesShort;
110 string mSd;
111 string mLr;
112 string mMode;
113
114 void setModesCasioSci();
115// string tryToMakeFixedNumStr(string numStr, int digits, int maxLen);
116 virtual int getNumStrLen(string numStr) const { return numStr.size(); }
117public:
119 void resetCalcModes() { mSd = mLr = ".."; }
120 void setSd () { resetCalcModes(); mSd = "SD"; }
121 void setLr () { resetCalcModes(); mLr = "LR"; }
122 void setCmp() { resetCalcModes(); }
123 void setCalcMode(CalcMode cm);
124 void setMode(bool on) { mMode = on ? "m" : "."; return; } // Casio fx-85v: "m"
125 string getModesShort() { return mModesShort; }
126};
127
128//******************************************************************************
129// zusaetzliche Symbole in Casio-Taschenrechnern:
130//****************** ******************* ******************* *******************
131
133
135{
136public:
137 FnFact() : SymOtherFunction("fact", "faculty n! of number n") {}
138 Number calcVal(const Number& a) { return Util::fact(a.getVal()); }
139};
140
141//************************* ************************* **************************
142
144
145class AcMode : public SymAction
146{
147public:
148 AcMode() : SymAction("mode", "set/reset special shift mode") {}
149 void process();
150};
151
152//************************* ************************* **************************
153
155// fse, 27.04.02
156// fse, 17.03.03: Trennzeichen '#' durch '@' ersetzt
157
158class AcKin : public SymAction
159{
160public:
161 AcKin() : SymAction("kin", "store display to memory K1..K6 ('kin@2')") {}
162 void process();
163};
164
165//************************* ************************* **************************
166
168// fse, 27.04.02
169// fse, 17.03.03: Trennzeichen '#' durch '@' ersetzt
170
171class AcKout : public SymAction
172{
173public:
174 AcKout() : SymAction("kout", "recall memory K1..K6 to display ('kout@2')") {}
175 void process();
176};
177
178//************************* ************************* **************************
179
181// fse, 27.04.02
182
183class AcKac : public SymAction
184{
185public:
186 AcKac() : SymAction("kac", "clear all and all memories K1..K6") {}
187 void process();
188};
189
190//************************* ************************* **************************
191
193// fse, 27.04.02
194
195class AcCmp : public SymAction
196{
197public:
198 AcCmp() : SymAction("cmp", "switch off statistical and regression mode") {}
199 void process() { static_cast<ComputerCasioSci*>(mCompP)->setCalcMode(CMP); }
200};
201
202//************************* ************************* **************************
203
205// fse, 27.04.02
206
207class AcSd : public SymAction
208{
209public:
210 AcSd() : SymAction("sd", "switch to statistical mode") {}
211 void process() { static_cast<ComputerCasioSci*>(mCompP)->setCalcMode(SD); }
212};
213
214//************************* ************************* **************************
215
217// fse, 27.04.02
218
219class AcLr : public SymAction
220{
221public:
222 AcLr() : SymAction("lr", "switch to regression mode") {}
223 void process() { static_cast<ComputerCasioSci*>(mCompP)->setCalcMode(LR); }
224};
225
226//************************* ************************* **************************
227
229// fse, 13.07.02
230
231class AcXd : public SymAction
232{
233public:
234 AcXd() : SymAction("xd", "input x data in regression mode") {}
235 void process() { static_cast<ComputerCasioSci*>(mCompP)->setXdata(mCompP->topNum()); }
236};
237
238//************************* ************************* **************************
239
241// fse, 04.05.02
242
243class AcData : public SymAction
244{
245public:
246 AcData() : SymAction("data", "enter display as statistical input") {}
247 void process();
248 void processSd();
249 void processLr();
250};
251
252//************************* ************************* **************************
253
255// fse, 13.07.02
256
257class AcDel : public SymAction
258{
259
260public:
261 AcDel() : SymAction("del", "delete display from statistical data") {}
262 void process();
263 void processSd();
264 void processLr();
265};
266
267//************************* ************************* **************************
268
270// fse, 27.04.02
271
272class AcXave : public SymAction
273{
274public:
275 AcXave() : SymAction("xave", "average of x-values") {};
276 void process();
277};
278
279//************************* ************************* **************************
280
282// fse, 27.04.02
283
284class AcYave : public SymAction
285{
286public:
287 AcYave() : SymAction("yave", "average of y-values") {}
288 void process();
289};
290
291//************************* ************************* **************************
292
294// fse, 27.04.02
295
296class AcXsgm : public SymAction
297{
298public:
299 AcXsgm() : SymAction("xsgm", "x population standard deviation") {}
300 void process();
301};
302
303//************************* ************************* **************************
304
306// fse, 27.04.02
307
308class AcYsgm : public SymAction
309{
310public:
311 AcYsgm() : SymAction("ysgm", "y population standard deviation") {}
312 void process();
313};
314
315//************************* ************************* **************************
316
318// fse, 27.04.02
319
320class AcXsgm1 : public SymAction
321{
322public:
323 AcXsgm1() : SymAction("xsgm1", "x sample standard deviation") {}
324 void process();
325};
326
327
328//************************* ************************* **************************
329
331// fse, 27.04.02
332
333class AcYsgm1 : public SymAction
334{
335public:
336 AcYsgm1() : SymAction("ysgm1", "y sample standard deviation") {}
337 void process();
338};
339
340//************************* ************************* **************************
341
343// fse, 27.04.02
344
345class AcA : public SymAction
346{
347public:
348 AcA() : SymAction("a", "constant term (regression)") {}
349 void process();
350};
351
352//************************* ************************* **************************
353
355// fse, 27.04.02
356
357class AcB : public SymAction
358{
359public:
360 AcB() : SymAction("b", "correlation coefficient") {}
361 void process();
362};
363
364//************************* ************************* **************************
365
367// fse, 27.04.02
368
369class AcR : public SymAction
370{
371public:
372 AcR() : SymAction("r", "regression coefficient") {}
373 void process();
374};
375
376//************************* ************************* **************************
377
379// fse, 27.04.02
380
381class AcX : public SymAction
382{
383public:
384 AcX() : SymAction("x", "x estimator") {}
385 void process();
386};
387
388//************************* ************************* **************************
389
391// fse, 27.04.02
392
393class AcY : public SymAction
394{
395public:
396 AcY() : SymAction("y", "y estimator") {}
397 void process();
398};
399
400//************************* ************************* **************************
401
403
404class AcRan : public SymAction
405{
406public:
407 AcRan() : SymAction("ran", "random number") {}
408 void process();
409};
410
411//************************* ************************* **************************
412
414
415class AcIsxg : public SymAction
416{
417public:
418 AcIsxg() : SymAction("isxg", "input of sexagesimal numbers") {}
419 void process();
420};
421
422//************************* ************************* **************************
423
425
426class AcSxg : public SymAction
427{
428public:
429 AcSxg() : SymAction("sxg", "conversion decimal to sexagesimal number") {}
430 void process() { (static_cast<DisplayCasioSci*>(mDsplP))->setSxgMode(true); }
431};
432
433//************************* ************************* **************************
434
436
437class AcXy : public SymAction
438{
439public:
440 AcXy() : SymAction("xy", "swap display and y register") {}
441 void process();
442};
443
444//************************* ************************* **************************
445
447// fse, 17.03.03: Trennzeichen '#' durch '@' ersetzt
448
449class AcXk : public SymAction
450{
451public:
452 AcXk() : SymAction("xk", "swap display and memory K1, K2, ... or K6 ('xk@2')") {}
453 void process();
454};
455
456//************************* ************************* **************************
457
459
460class OpRp : public SymOperator
461{
462public:
463 OpRp() : SymOperator("rp", 6, "transform rectangualar to polar coordinates") {}
464 Number calcVal(const Number& a, const Number& b);
465 void process() { processCommon(); }
466};
467
468//************************* ************************* **************************
469
471
472class OpPr : public SymOperator
473{
474public:
475 OpPr() : SymOperator("pr", 6, "transform polar to rectangualar coordinates") {}
476 Number calcVal(const Number& a, const Number& b);
477 void process() { processCommon(); }
478};
479
480//****************** ******************* ******************* *******************
481
483
485{
486public:
487 FnRnd() : SymOtherFunction("rnd", "rounding value to display") {}
488 Number calcVal(const Number& a);
489};
490
491//******************************************************************************
492//************************************** ***************************************
493//************************* ************************* **************************
494
495#endif // !CALC_CASIO_SCI_H
Klassen fuer alle wissenschaftlichen Taschenrechner (Modul base).
Konstanter Wert A bei Regression.
Definition: calc_casio_sci.h:346
void process()
y-Achsenabschnitt A bei Regression.
Definition: calc_casio_sci.cpp:1001
Regressionskoeffizient B.
Definition: calc_casio_sci.h:358
void process()
Regressionskoeffizient B.
Definition: calc_casio_sci.cpp:1014
Schaltet Statistik- und Regressionsmodus ab ("Compute"-Modus).
Definition: calc_casio_sci.h:196
Enter fuer Statistik- und Regressionsmodus.
Definition: calc_casio_sci.h:244
void processLr()
Prozessiert "Data" im Regressionsmodus.
Definition: calc_casio_sci.cpp:803
void processSd()
Prozessiert "Data" im Statistikmodus.
Definition: calc_casio_sci.cpp:779
void process()
Enter fuer Statistik- und Regressionsmodus.
Definition: calc_casio_sci.cpp:760
Delete fuer Statistik- und Regressionsmodus.
Definition: calc_casio_sci.h:258
void process()
Delete fuer Statistik- und Regressionsmodus.
Definition: calc_casio_sci.cpp:827
void processLr()
Prozessiert "Delete" im Regressionsmodus.
Definition: calc_casio_sci.cpp:869
void processSd()
Prozessiert "Delete" im Statistikmodus.
Definition: calc_casio_sci.cpp:845
Eingabe von Zahlen im Sexagesimalsystem.
Definition: calc_casio_sci.h:416
void process()
Konvertierung Sexagesimal-/Dezimalsystem.
Definition: calc_casio_sci.cpp:1094
Gesamtloeschung und Loeschen aller Speicher K1 bis K6.
Definition: calc_casio_sci.h:184
void process()
Loeschen aller Speicher K1 bis K6.
Definition: calc_casio_sci.cpp:693
Speicher K1 bis K6.
Definition: calc_casio_sci.h:159
void process()
Schreiben der Speicher K1 bis K6.
Definition: calc_casio_sci.cpp:631
Speicher K1 bis K6.
Definition: calc_casio_sci.h:172
void process()
Lesen der Speicher K1 bis K6.
Definition: calc_casio_sci.cpp:669
Wechselt in Regressionsmodus.
Definition: calc_casio_sci.h:220
Symbol Mode-Taste.
Definition: calc_casio_sci.h:146
void process()
Setzt Mode-Modus.
Definition: calc_casio_sci.cpp:617
Korrelationskoeffizient r.
Definition: calc_casio_sci.h:370
void process()
Korrelationskoeffizient r.
Definition: calc_casio_sci.cpp:1027
Zufallszahl.
Definition: calc_casio_sci.h:405
void process()
Dreistellige Zufallszahl zwischen 0 und 1.
Definition: calc_casio_sci.cpp:1077
Wechselt in Statistikmodus.
Definition: calc_casio_sci.h:208
Umwandlung Dezimal- nach Sexagesimalsystem.
Definition: calc_casio_sci.h:427
Berechnungswert x bei Regression.
Definition: calc_casio_sci.h:382
void process()
Berechnungswert x bei Regression.
Definition: calc_casio_sci.cpp:1041
Durchschnitt der x-Werte.
Definition: calc_casio_sci.h:273
void process()
Durchschnitt der x-Werte.
Definition: calc_casio_sci.cpp:893
Uebertraegt Anzeige in den x-Daten-Zwischenspeicher.
Definition: calc_casio_sci.h:232
Vertauscht Anzeige mit Speicher K1 bis K6.
Definition: calc_casio_sci.h:450
void process()
Vertauschen der Speicher K1 bis K6 mit der Anzeige.
Definition: calc_casio_sci.cpp:710
Stichproben-Standardabweichung x.
Definition: calc_casio_sci.h:321
void process()
Stichproben-Standardabweichung x.
Definition: calc_casio_sci.cpp:964
Grundgesamtheits-Standardabweichung x.
Definition: calc_casio_sci.h:297
void process()
Grundgesamtheits-Standardabweichung x.
Definition: calc_casio_sci.cpp:925
Vertauscht Anzeige mit oberstem Element des Nummernstacks.
Definition: calc_casio_sci.h:438
void process()
Vertauschen des obersten Nummern-Stack-Elements mit der Anzeige.
Definition: calc_casio_sci.cpp:736
Berechnungswert y bei Regression.
Definition: calc_casio_sci.h:394
void process()
Berechnungswert y bei Regression.
Definition: calc_casio_sci.cpp:1058
Durchschnitt der y-Werte.
Definition: calc_casio_sci.h:285
void process()
Durchschnitt der y-Werte.
Definition: calc_casio_sci.cpp:909
Stichproben-Standardabweichung x.
Definition: calc_casio_sci.h:334
void process()
Stichproben-Standardabweichung y.
Definition: calc_casio_sci.cpp:982
GrundgesamtheitsStandardabweichung y.
Definition: calc_casio_sci.h:309
void process()
Grundgesamtheits-Standardabweichung y.
Definition: calc_casio_sci.cpp:946
Basisklasse aller Computer.
Definition: calculator.h:85
Gemeinsame Basisklasse aller wissenschaftlichen Casio-Rechner.
Definition: calc_casio_sci.h:44
bool mIsKoutInput
Kin wurde gedrueckt.
Definition: calc_casio_sci.h:52
bool mapInvCasioSci(string &sym)
Ordnet einem Symbol dasjenige Symbol zu, das ihm im Invers-Modus entspricht.
Definition: calc_casio_sci.cpp:277
string mLrDat
dito LR-Daten
Definition: calc_casio_sci.h:58
string mSdDat
zuletzt im Editor eingegebene SD-Daten
Definition: calc_casio_sci.h:57
void aftProcess(string &in)
Fuehrt Aktionen nach Prozessierung des Symbols in aus.
Definition: calc_casio_sci.cpp:581
Number calcA() const
Berechnet aus den K-Speichern den y-Achsenabschnitt A bei Regressionsrechnung.
Definition: calc_casio_sci.cpp:415
Number calcR() const
Berechnet Korrelationskoeffizient r aus den K-Speichern.
Definition: calc_casio_sci.cpp:449
bool popNumDepOnLastSymCasio()
Siehe gleichartige Funktion in ComputerBase.
Definition: calc_casio_sci.cpp:560
ComputerCasioSci()
Konstruktor fuegt die neuen Symbole zur Symboltabelle hinzu.
Definition: calc_casio_sci.cpp:98
void addCasioSymsToSymTab()
Fuegt die Symbole der wissenschaftlichen Casio-Rechner der Symboltabelle hinzu.
Definition: calc_casio_sci.cpp:113
bool mapCasioSci(string &sym)
Mapped einige Symbole auf andere Symbole um.
Definition: calc_casio_sci.cpp:160
bool mapKinKoutInputCasioSci(string &sym)
Fuehrt spezielles Mapping von Ziffern oder "+", "-", "*", "/" aus, falls zuvor "Kin" oder "Kout" eing...
Definition: calc_casio_sci.cpp:220
bool mIsMode
Mode-Modus.
Definition: calc_casio_sci.h:50
Number mXdata
temporaerer Speicher fuer Regressionsrechnung
Definition: calc_casio_sci.h:56
string makeCompCasioSciInfoStr()
Erzeugt fuers Debugging String mit den wichtigen Member-Variablen.
Definition: calc_casio_sci.cpp:594
bool mapModeCasioSci(string &sym)
Ordnet einem Symbol dasjenige Symbol zu, das ihm im Mode-Modus entspricht.
Definition: calc_casio_sci.cpp:319
Number calcB() const
Berechnet Regressionskoeffizient B aus den K-Speichern.
Definition: calc_casio_sci.cpp:431
void popNumDepOnLastSym()
Siehe gleichartige Funktion in ComputerBase.
Definition: calc_casio_sci.cpp:548
bool mIsXkInput
X<->K wurde gedrueckt.
Definition: calc_casio_sci.h:53
DisplayCasioSci * mDisplayCasioP
Zeiger auf das zugehoerige Display.
Definition: calc_casio_sci.h:49
void handlePercent()
Prozessiert das Prozentzeichen.
Definition: calc_casio_sci.cpp:490
bool mIsKinInput
Kin wurde gedrueckt.
Definition: calc_casio_sci.h:51
void handleDisplayAfterBra()
Siehe Kommentar ComputerBase::handleDisplayAfterBra().
Definition: calc_casio_sci.cpp:359
CalcMode mCalcMode
Calculation-Modus CMP, SD, LR.
Definition: calc_casio_sci.h:55
Number mKmem[6]
Konstantenspeicher K1 bis K6.
Definition: calc_casio_sci.h:54
SymOperator * checkConstMode(SymOperator *opP)
Untersucht, ob in den Konstanten-Modus gewechselt werden muss oder dieser abgeschaltet werden muss.
Definition: calc_casio_sci.cpp:385
void handleEmptyNumStack(Number &a, SymOperator *soP, Number &b)
Erfindet einen zweiten Operanden, falls ein Operator mit nur einem berechnet werden soll.
Definition: calc_casio_sci.cpp:344
Bruchdarstellung: Fliesskomma, Bruch, gemischter Bruch.
Definition: calc_sci.h:48
Klasse der Anzeige aller wissenschaftlichen Casio-Rechner.
Definition: calc_casio_sci.h:103
string mModesShort
jeder Mode wird hier durch ein Zeichen repraesentiert
Definition: calc_casio_sci.h:109
string mLr
String des Regressionsmodus' "LR".
Definition: calc_casio_sci.h:111
string mMode
String des Mode-Modus'.
Definition: calc_casio_sci.h:112
void setCalcMode(CalcMode cm)
Setzt den Modus, in dem sich der Rechner jetzt befinden soll.
Definition: calc_casio_sci.cpp:77
void setModesCasioSci()
Schaut im Computer, welche Modes gesetzt sind, und baut den Mode-String des Displays entsprechend zus...
Definition: calc_casio_sci.cpp:57
string mSd
String des Statistikmodus' "SD".
Definition: calc_casio_sci.h:110
DisplayCasioSci(ComputerBase *cbP)
Konstruktor der Casio-Display-Klasse.
Definition: calc_casio_sci.cpp:43
Display fuer wissenschaftliche Taschenrechner.
Definition: calc_sci.h:96
Symbol Fakultaet.
Definition: calc_casio_sci.h:135
Rundet Wert auf Wert in Anzeige.
Definition: calc_casio_sci.h:485
Number calcVal(const Number &a)
Rundet den Wert in der Anzeige so, wie er aktuell in der Aneige erscheint.
Definition: calc_casio_sci.cpp:1163
Die Klasse Number repraesentiert Zahlen.
Definition: number.h:49
Verwandelt Polar- in rechtwinklige Koordinaten.
Definition: calc_casio_sci.h:473
Number calcVal(const Number &a, const Number &b)
Wandelt Polarkoordinaten (r,phi) in rechtwinklige Koordinaten (a,b) um.
Definition: calc_casio_sci.cpp:1142
Verwandelt rechtwinklige in Polarkoordinaten.
Definition: calc_casio_sci.h:461
Number calcVal(const Number &a, const Number &b)
Wandelt rechtwinklige Koordinaten (a,b) in Polarkoordinaten (r,phi) um.
Definition: calc_casio_sci.cpp:1123
Basisklasse fuer alle Aktionen ("=", "%", ...).
Definition: symbols.h:278
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
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 fact(double n)
Berechnet rekursiv die Fakultaet n! der Zahl n.
Definition: util.cpp:993