// Fraction.h: interface for the Fraction class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_FRACTION_H__D7EDBF81_8F04_11D3_AE20_80533ECA5CCA__INCLUDED_)
#define AFX_FRACTION_H__D7EDBF81_8F04_11D3_AE20_80533ECA5CCA__INCLUDED_

#if _MSC_VER >= 1000
#pragma once
#endif // _MSC_VER >= 1000

class Fraction  
{
//data
public:
	int n,d;

public:
	Fraction();
	Fraction(float f)
	{
		n=int(f*10000);
		d=10000;
		Lower();
	}

	Fraction(int i)
	{
		n=i;
		d=1;

	}

	virtual ~Fraction();

	
	Fraction operator =(Fraction a);



	Fraction operator -()
	{
		
		n=-n;
		d=d;
		return *this;
	}

	Fraction operator +()
	{
	
		return *this;
	}

	operator float()
	{
		return float(n)/float(d);
	}

	operator int()
	{
		return n/d;
	}

	operator CString()
	{
		CString a="";
		char buffer[10];
		itoa(n,buffer,10);
		a+=CString(buffer);
		
		if(d!=1)
		{
			itoa(d,buffer,10);
			a+="/"+CString(buffer);
		}

		return a;

	}


	void Lower()
	{

		
		if(n==0) {d=1;return;}
		if(n==1 || d==1) return;
		int g=GCD(abs(n),abs(d));
		
		
		if(g)
		{
			n/=g;
			d/=g;
		}
	}


	int GCD(int a,int b)
	{
		

		if(a==b) return a;

		if(a>b) 
			return GCD(a-b,b);
		else
			return GCD(b-a,a);

		

	}


	friend Fraction operator +=(Fraction a,Fraction b);
	friend	Fraction operator *(Fraction a,Fraction b);
	friend Fraction operator +(Fraction a,Fraction b);
	friend Fraction operator -(Fraction a,Fraction b);
	friend Fraction operator /(Fraction a,Fraction b);
	friend int operator >(Fraction a,Fraction b);
	friend int operator <(Fraction a,Fraction b);
	friend int operator ==(Fraction a,Fraction b);
	friend Fraction operator +=(Fraction&,Fraction);
	friend Fraction operator -=(Fraction&,Fraction);
	friend Fraction operator /=(Fraction&,Fraction);
	friend Fraction operator *=(Fraction&,Fraction);
		
	friend int operator !=(Fraction a,Fraction b);
	friend int operator <=(Fraction a,Fraction b);
	friend int operator >=(Fraction a,Fraction b);





};

#endif // !defined(AFX_FRACTION_H__D7EDBF81_8F04_11D3_AE20_80533ECA5CCA__INCLUDED_)
