Frac.h
gehe zur Dokumentation dieser Datei
00001 
00028 // ##################################################################
00029 // frac ... calculating with fractions
00030 // ##################################################################
00031 
00032 #ifndef FRAC_H
00033 #define FRAC_H
00034 
00035 #include "Defs.h"
00036 #include "wx/string.h"
00037 
00038 #ifdef HAVE_BOOST_RATIONAL_HPP
00039 #include <boost/rational.hpp>
00040 
00041 typedef boost::rational<long> frac;
00042 
00043 inline wxString TowxString(frac f)
00044 {
00045         return wxString::Format(_T("%ld/%ld"),f.numerator(),f.denominator());
00046 }
00047 
00048 
00049 #else
00050 
00051 
00052 #include <iostream>
00053 
00054 class frac
00055 {
00056 
00057 private:
00058         long n, d;
00059 
00060 public:
00061         frac()
00062         {
00063                 n = 0;
00064                 d = 1;
00065         }
00066 
00067         frac(long integerval) 
00068         {
00069                 n = integerval;
00070                 d = 0;
00071         }
00072         
00073         frac(long numerator, long denominator)
00074         {
00075                 n = numerator;
00076                 d = denominator;
00077         }
00078 
00079         long numerator() const {return n;}
00080 
00081         long denominator() const {return d;}
00082 
00083         frac& operator =(const frac& f);
00084 
00085         frac& operator +=(const frac& f);
00086 
00087         frac& operator -=(const frac& f);
00088 
00089         frac& operator *=(const frac& f);
00090 
00091         frac& operator /=(const frac& f);
00092 
00093         frac operator +(const frac s);
00094 
00095         frac operator -(const frac s);
00096 
00097         frac operator *(const frac s);
00098 
00099         frac operator /(const frac s);
00100 
00101         int operator <(const frac &f);
00102 
00103         int operator <=(const frac &f);
00104 
00105         int operator ==(const frac &f);
00106 
00107         int operator !=(const frac &f);
00108 
00109         int operator >=(const frac &f);
00110 
00111         int operator >(const frac &f);
00112 
00113         operator bool()
00114         {
00115                 return n;
00116         }
00117 
00118         bool operator !()
00119 
00120         {
00121                 return !n;
00122         }
00123 
00124         frac& operator =(const int &i);
00125 
00126         long gcd(long a, long b);
00127 
00128         friend STD_PRE::ostream& operator << (STD_PRE::ostream& os, const frac f);
00129 
00130 #ifdef WX
00131         operator wxString() const
00132         {
00133                 return wxString::Format(_T("%ld/%ld"),n,d);
00134         }
00135 
00136 #endif
00137 };
00138 
00139 #ifdef WX
00140 inline wxString TowxString(const frac &f)
00141 {
00142         return (wxString) f;
00143 }
00144 
00145 inline STD_PRE::ostream& operator<<(STD_PRE::ostream& os, const frac f)
00146 {
00147         return os << "(" << f.n << "/" << f.d << ")";
00148 }
00149 #endif
00150 
00151 #endif /* HAVE_BOOST_RATIONAL_H */
00152 
00153 #endif
00154 
00155 
00156 

Erzeugt am Sun Aug 21 2011 10:51:51 für Mutabor von doxygen 1.7.4