Almetare  1.15
Alle meine Taschenrechner - Eine C++-Bibliothek zur Entwicklung von Taschenrechnern
number.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 //******************************************************************************
9 //******************************************************************************
10 // Wann Wer Was
11 // ---------- -------- ---------------------------------------------------------
12 // 08.03.2003 fse neue Operatoren <= und >=
13 // 21.04.2002 fse erzeugt
14 //******************************************************************************
15 
16 #ifndef NUMBER_H
17 #define NUMBER_H
18 
19 #ifndef __cplusplus
20 #error number.h is only for C++!
21 #endif
22 
23 //******************************************************************************
24 
25 #include "fraction.h"
26 
27 //******************************************************************************
28 
29 class Number;
30 
31 typedef Number& (*OpFuncp)(const Number&);
32 typedef Fraction (*FrcOpFuncp)(const Fraction&, const Fraction&);
33 
34 //******************************************************************************
35 // Klasse Number:
36 //******************************************************************************
37 
46 // fse, 30.09.02
47 
48 class Number
49 {
50  double mVal;
52  bool mIsFrc;
53 public:
54  Number( ) : mVal(0), mFrc(0), mIsFrc(true ) {}
55  Number(int v) : mVal(0), mFrc(v), mIsFrc(true ) {}
56  Number(long v) : mVal(0), mFrc(v), mIsFrc(true ) {}
57  Number(double v) : mVal(v), mFrc(0), mIsFrc(false) {}
58  Number(const Fraction& f) : mVal(0), mFrc(f), mIsFrc(true ) {}
59  Number(const string& s);
60  double getVal() const { if (mIsFrc) return mFrc.getVal(); else return mVal; }
61  double val () const { return mVal ; }
62  Fraction frc () const { return mFrc ; }
63  bool isFrc () const { return mIsFrc; }
64  bool isFrcOverflow() const { return mIsFrc && mFrc.isOverflow(); }
65  Number frcToDbl();
66  Number dblToFrc();
67  string makeStr(int format = 3, int digits = -1, int shiftNum = 0, double forceSci = -1.0) const;
68  bool calcBaseOp(const FrcOpFuncp opP, Number n);
69  Number& operator= (const Number& n);
70  Number& operator*=(const Number& n);
71  Number& operator/=(const Number& n);
72  Number& operator+=(const Number& n);
73  Number& operator-=(const Number& n);
74  friend Number operator* (const Number& n1, const Number& n2) { Number ret(n1); ret *= n2; return ret; }
75  friend Number operator/ (const Number& n1, const Number& n2) { Number ret(n1); ret /= n2; return ret; }
76  friend Number operator+ (const Number& n1, const Number& n2) { Number ret(n1); ret += n2; return ret; }
77  friend Number operator- (const Number& n1, const Number& n2) { Number ret(n1); ret -= n2; return ret; }
78  friend Number operator- (const Number& n) throw (ZeroDivide) { return 0 - n; }
79  friend bool operator==(const Number& n1, const Number& n2);
80  friend bool operator!=(const Number& n1, const Number& n2);
81  friend bool operator< (const Number& n1, const Number& n2);
82  friend bool operator<=(const Number& n1, const Number& n2);
83  friend bool operator> (const Number& n1, const Number& n2);
84  friend bool operator>=(const Number& n1, const Number& n2);
85  friend ostream& operator<<(ostream& os, const Number& n);
86 };
87 
88 //******************************************************************************
89 
90 #endif // !NUMBER_H
91 
friend bool operator<(const Number &n1, const Number &n2)
Operator "kleiner als".
Definition: number.cpp:322
friend bool operator<=(const Number &n1, const Number &n2)
Operator "kleiner als oder gleich".
Definition: number.cpp:338
Number & operator *=(const Number &n)
Multiplikation und gleichzeitig Zuweisung.
Definition: number.cpp:199
Klassen zum Rechnen mit Bruechen - Deklarationen (Modul lib)
double mVal
numerischer Wert der Zahl
Definition: number.h:50
Number & operator=(const Number &n)
Ueberladener Zuweisungsoperator.
Definition: number.cpp:179
Klasse zum Rechnen mit Bruechen.
Definition: fraction.h:84
Die Klasse Number repraesentiert Zahlen.
Definition: number.h:48
Klasse zur Ausnahmebehandlung "Division durch 0".
Definition: fraction.h:59
friend bool operator!=(const Number &n1, const Number &n2)
Pruefung auf Ungleichheit.
Definition: number.cpp:299
friend bool operator==(const Number &n1, const Number &n2)
Vergleichsoperator.
Definition: number.cpp:283
Number & operator/=(const Number &n)
Division und gleichzeitig Zuweisung.
Definition: number.cpp:248
bool calcBaseOp(const FrcOpFuncp opP, Number n)
Allgemeine Funktion zur Berechnung einer Operation (Grundrechenart) mit dem Objekt *this und einer we...
Definition: number.cpp:219
friend ostream & operator<<(ostream &os, const Number &n)
Ausgabeoperator.
Definition: number.cpp:386
Number dblToFrc()
Konvertiert die Zahl *this von einem Double in einen Bruch.
Definition: number.cpp:120
Number & operator-=(const Number &n)
Subtraktion und gleichzeitig Zuweisung.
Definition: number.cpp:271
Fraction mFrc
Bruch, falls Zahl als Bruch dargestellt werden kann.
Definition: number.h:51
bool mIsFrc
Flag gibt an, ob Zahl als Bruch repraesentiert wird.
Definition: number.h:52
Number & operator+=(const Number &n)
Addition und gleichzeitig Zuweisung.
Definition: number.cpp:259
Number frcToDbl()
Konvertiert die Zahl *this von einem Bruch in einen Double.
Definition: number.cpp:105
friend bool operator>=(const Number &n1, const Number &n2)
Operator "groesser als oder gleich".
Definition: number.cpp:370
string makeStr(int format=3, int digits=-1, int shiftNum=0, double forceSci=-1.0) const
Wandelt Number in String um.
Definition: number.cpp:157
friend bool operator>(const Number &n1, const Number &n2)
Operator "groesser als".
Definition: number.cpp:354