sdf
Dependencies: AvailableMemory mbed-rtos mbed
Diff: RationalNum.h
- Revision:
- 0:1c8f2727e9f5
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/RationalNum.h Thu Apr 03 22:56:32 2014 +0000 @@ -0,0 +1,36 @@ +#ifndef _RATIONALNUM_H +#define _RATIONALNUM_H + +#include "mbed.h" + +int gcd(int x, int y); +int lcm(int x, int y); + +class RationalNum{ + friend RationalNum operator + (RationalNum lhs, RationalNum rhs); + friend RationalNum operator - (RationalNum lhs, RationalNum rhs); + friend RationalNum operator * (RationalNum lhs, RationalNum rhs); + friend RationalNum operator / (RationalNum lhs, RationalNum rhs); + friend bool operator == (RationalNum lhs, RationalNum rhs); + friend bool operator != (RationalNum lhs, RationalNum rhs); + friend bool operator >= (RationalNum lhs, RationalNum rhs); + friend bool operator > (RationalNum lhs, RationalNum rhs); + friend bool operator <= (RationalNum lhs, RationalNum rhs); + friend bool operator < (RationalNum lhs, RationalNum rhs); +private: + int numerator; + /*non-zero denominator*/ + int denominator; +public: + RationalNum():numerator(0),denominator(1){} + RationalNum(int n, int d):numerator(n),denominator(d){normalize();} + RationalNum(int k):numerator(k),denominator(1){} + RationalNum(const RationalNum &orig):numerator(orig.numerator),denominator(orig.denominator){normalize();} + RationalNum& operator = (const RationalNum &rhs){numerator=rhs.numerator;denominator=rhs.denominator;return *this;} + void print()const{printf("%d\\/%d", numerator, denominator);} + int getNumerator()const{return numerator;} + int getDenominator()const{return denominator;} + void normalize(); +}; + +#endif \ No newline at end of file