std::pair<int, CRational> CRational::ToCompoundFraction() const { int wholeNumber = m_numerator / m_denominator; int numerator = m_numerator - (wholeNumber * m_denominator); return std::pair<int, CRational>(wholeNumber, CRational(numerator, m_denominator)); }
std::pair<int, CRational> CRational::ToCompoundFraction()const { int integer = static_cast<int>(ToDouble()); int numerator = m_numerator - m_denominator * integer; return std::make_pair<int, CRational>(std::move(integer), CRational(numerator, m_denominator)); }
// task 3 binary - CRational const operator -(const CRational & firstNumber, const CRational & secNumber) { int numerator = (firstNumber.GetNumerator() * secNumber.GetDenominator()) - (secNumber.GetNumerator() * firstNumber.GetDenominator()); int denominator = firstNumber.GetDenominator() * secNumber.GetDenominator(); return CRational(numerator, denominator); }
CRational const operator /(CRational const &rational1, CRational const &rational2) { return (CRational(rational1.GetNumerator() * rational2.GetDenominator() , rational1.GetDenominator() * rational2.GetNumerator())); }
CRational const CRational::operator-()const { return CRational(-m_numerator, m_denominator); }
CRational const operator /(int t, CRational const &rat) { return CRational(rat.m_denominator * t, rat.m_numerator); }
//7 CRational const operator *(CRational rat1, CRational const &rat2) { return CRational(rat1.m_numerator * rat2.m_numerator, rat1.m_denominator * rat2.m_denominator); }
//8 CRational const CRational::operator /(CRational const &rat) const { return CRational(m_numerator * rat.m_denominator, m_denominator * rat.m_numerator); }
////////////////////////////////////////////////////////////////////////// // TODO: 4. Реализовать бинарный - const CRational operator - (const CRational &num1, const CRational &num2) { const unsigned lcm = LCM(num1.GetDenominator(), num2.GetDenominator()); return CRational(num1.GetNumerator() * (lcm / num1.GetDenominator()) - num2.GetNumerator() * (lcm / num2.GetDenominator()), lcm); }
CRational const operator /(CRational const &rat, int t) { return CRational(rat.m_numerator, rat.m_denominator * t); }
////////////////////////////////////////////////////////////////////////// // TODO: 8. Реализовать оператор / const CRational operator / (const CRational &num1, const CRational &num2) { return CRational(num1.GetNumerator() * num2.GetDenominator(), num2.GetNumerator() * num1.GetDenominator()); }
CRational const operator*(const CRational & rational1, const CRational & rational2) { return (CRational(rational1) *= rational2); }
CRational & CRational::operator/=(const CRational & other) { *this *= CRational(other.GetDenominator(), other.GetNumerator()); // to throw the exeption if other numerator equals 0 return *this; }
CRational const CRational::operator-() const { return CRational(-GetNumerator(), GetDenominator()); }
std::pair<int, CRational> CRational::ToCompoundFraction() const { return { m_numerator / m_denominator, CRational(m_numerator % m_denominator, m_denominator) }; }