Almetare 1.20
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
29class Number;
30
31typedef Number& (*OpFuncp)(const Number&);
32typedef Fraction (*FrcOpFuncp)(const Fraction&, const Fraction&);
33
34//******************************************************************************
35// Klasse Number:
36//******************************************************************************
37
46// fse, 30.09.02
47
48class Number
49{
50 double mVal;
52 bool mIsFrc;
53public:
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(); }
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
Klasse zum Rechnen mit Bruechen.
Definition: fraction.h:85
Die Klasse Number repraesentiert Zahlen.
Definition: number.h:49
Number & operator+=(const Number &n)
Addition und gleichzeitig Zuweisung.
Definition: number.cpp:259
Number dblToFrc()
Konvertiert die Zahl *this von einem Double in einen Bruch.
Definition: number.cpp:120
friend bool operator!=(const Number &n1, const Number &n2)
Pruefung auf Ungleichheit.
Definition: number.cpp:299
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
double mVal
numerischer Wert der Zahl
Definition: number.h:50
Number & operator-=(const Number &n)
Subtraktion und gleichzeitig Zuweisung.
Definition: number.cpp:271
friend bool operator<=(const Number &n1, const Number &n2)
Operator "kleiner als oder gleich".
Definition: number.cpp:338
Number & operator/=(const Number &n)
Division und gleichzeitig Zuweisung.
Definition: number.cpp:248
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)
Vergleichsoperator.
Definition: number.cpp:283
Number & operator=(const Number &n)
Ueberladener Zuweisungsoperator.
Definition: number.cpp:179
friend ostream & operator<<(ostream &os, const Number &n)
Ausgabeoperator.
Definition: number.cpp:386
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
friend bool operator<(const Number &n1, const Number &n2)
Operator "kleiner als".
Definition: number.cpp:322
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".
Definition: number.cpp:354
Number & operator*=(const Number &n)
Multiplikation und gleichzeitig Zuweisung.
Definition: number.cpp:199
friend bool operator>=(const Number &n1, const Number &n2)
Operator "groesser als oder gleich".
Definition: number.cpp:370
Klasse zur Ausnahmebehandlung "Division durch 0".
Definition: fraction.h:60
Klassen zum Rechnen mit Bruechen - Deklarationen (Modul lib)