
Listing 5

//
// rational.h
//
#include <stdio.h>

class rational
	{
public:
	rational() { }
	rational(long n) : num(n), denom(1) { }
	rational(long n, long d) : num(n), denom(d) { }
	rational &operator+=(rational);
	rational &operator-=(rational);
	rational &operator*=(rational);
	rational &operator/=(rational);
	void put(FILE *);
private:
	long num, denom;
	void simplify();
	};

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;
	}

