/*
 * Instituto Superior de Engenharia do Porto
 *
 * Estruturas de Informação
 *
 * 2000/2001
 *
 * ------------------------------------------
 *
 * Miniteste
 *
 */

/*

1.	Dada a seguinte classe CFraccao que representa um número fraccionário ( dividendo/divisor) implemente:
a)	o construtor de cópia
b)	um construtor que aceite argumentos para inicializar o objecto, e que funcione também como construtor por defeito
c)	métodos para modificar o valor do divisor e do dividendo
d)	o operador de atribuição
e)	um método que permita obter o número real correspondente àquela fracção 
f)	o operador de adição ( a/b + c/d = (a*d+c*b)/(b*d) )
g)	o operador de multiplicação ( a/b * c/d = (a*c)/(b*d) )



class CFracao
{
	int m_nDivisor;
	int m_nDividendo;
public:
	...

	int getDivisor() const	 {return m_nDivisor; }
	int getDividendo() const { return m_nDivididendo; }

	...
};


*/

class CFracao
{
	int m_nDivisor;
	int m_nDividendo;
public:
	CFracao(const CFracao& o);
	CFracao(int nDividendo = 0, int nDivisor = 1);

	int getDivisor() const		{return m_nDivisor; }
	int getDividendo() const	{ return m_nDividendo; }

	void setDividendo(int nDividendo)	{ m_nDividendo = nDividendo; }
	void setDivisor(int nDivisor);

	double getValor() const		{ return (double)m_nDividendo/m_nDivisor; }

	CFracao& operator=(const CFracao& o);
};

CFracao operator+(const CFracao& a, const CFracao& b);
CFracao operator*(const CFracao& a, const CFracao& b);

ostream& operator<<(ostream& output, const CFracao& obj);
