- 论坛徽章:
- 0
|
class Fract{
public:
Fract(int den, int mol) : m_den(den), m_mol(mol) {};
Fract(const Fract& rhs) : m_den(rhs.m_den), m_mol(rhs.m_mol) {};
Fract& operator+=(const Fract& rhs)
{
m_mol = m_mol * rhs.m_den + m_den * rhs.m_mol;
m_den = m_den * rhs.m_den;
int agcd = gcd(m_mol, m_den);
m_mol /= agcd;
m_den /= agcd;
return *this;
}
void print(std: stream& ostr) const
{
ostr<<m_mol<<"/"<<m_den;
}
static int gcd(int m, int n)
{
for(int r = m % n; r != 0; r = m % n)
{
m = n;
n = r;
}
return n;
}
private:
int m_den, m_mol;
};
Fract operator+(const Fract& lhs, const Fract& rhs)
{
Fract res(lhs);
res += rhs;
return res;
}
std: stream& operator<<(std: stream& _Ostr, const Fract& rhs)
{
rhs.print(_Ostr);
return _Ostr;
}
int main()
{
Fract a(3, 1);
Fract b(6, 1);
Fract c = a + b;
std::cout<<a<<" + "<<b<<" = "<<c<<std::endl; |
|