minor NR changes

This commit is contained in:
2024-03-02 13:11:23 +01:00
parent 222d723675
commit 750781aa5c
2 changed files with 11 additions and 3 deletions

View File

@@ -33,7 +33,9 @@ class NR {
NR& operator*=(const NR& opNR); NR& operator*=(const NR& opNR);
NR& operator/=(const NR& opNR); NR& operator/=(const NR& opNR);
void Invert(); NR operator-() const;
NR Inverse() const;
friend std::ostream& operator<<(std::ostream& os, const NR& opNR); friend std::ostream& operator<<(std::ostream& os, const NR& opNR);
friend std::istream& operator>>(std::istream& os, NR& opNR); friend std::istream& operator>>(std::istream& os, NR& opNR);

View File

@@ -19,6 +19,7 @@ NR::NR(int entier) : m_Numerator(entier), m_Denominator(1) {}
NR::NR(int numerator, int denominator) : NR::NR(int numerator, int denominator) :
m_Numerator((denominator > 0) ? numerator : -numerator), m_Denominator(std::abs(denominator)) { m_Numerator((denominator > 0) ? numerator : -numerator), m_Denominator(std::abs(denominator)) {
assert(denominator != 0); assert(denominator != 0);
Reduce();
} }
void NR::Reduce() { void NR::Reduce() {
@@ -27,8 +28,9 @@ void NR::Reduce() {
m_Numerator /= divisor; m_Numerator /= divisor;
} }
void NR::Invert() { NR NR::Inverse() const {
*this = NR(m_Denominator, m_Numerator); assert(*this != 0);
return {m_Denominator, m_Numerator};
} }
int NR::GetNumerator() const { int NR::GetNumerator() const {
@@ -128,3 +130,7 @@ NR& NR::operator/=(const NR& opNR) {
*this = *this / opNR; *this = *this / opNR;
return *this; return *this;
} }
NR NR::operator-() const {
return {-m_Numerator, m_Denominator};
}