#include <iostream.h>

class rational
	{
public:
	rational() : num(0), denom(1) { }
	rational(long n, long d = 1) : num(n), denom(d) { }
	rational &operator+=(rational r);
	rational &operator-=(rational r);
	rational &operator*=(rational r);
	rational &operator/=(rational r);
	rational operator+();
	rational operator-();
	double to_double() { return (double)num / denom; }
	friend ostream &operator<<(ostream &os, rational r);
private:
	long num, denom;
	void simplify();
	};

inline rational rational::operator+() { return *this; }

inline rational operator+(rational r1, rational r2)
	{
	return r1 += r2;
	}

inline rational operator-(rational r1, rational r2)
	{
	return r1 -= r2;
	}

inline rational operator*(rational r1, rational r2)
	{
	return r1 *= r2;
	}

inline rational operator/(rational r1, rational r2)
	{
	return r1 /= r2;
	}

inline rational operator++(rational &r)
	{
	return r += 1;
	}

inline rational operator--(rational &r)
	{
	return r -= 1;
	}

rational operator++(rational &r, int);
rational operator--(rational &r, int);

istream &operator>>(istream &is, rational &r);


