Compare commits

..

2 Commits

Author SHA1 Message Date
9d3d78fe16 better NR test
All checks were successful
Linux arm64 / Build (push) Successful in 37s
2024-03-02 13:11:43 +01:00
750781aa5c minor NR changes 2024-03-02 13:11:23 +01:00
3 changed files with 24 additions and 41 deletions

View File

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

View File

@@ -3,48 +3,23 @@
#include <cassert>
static void test() {
/*NR* frac = new NR;
NR frac2(3);
NR frac3(2, 5);
int a, b;
std::cout << "PGCD : entrez deux entiers" << std::endl;
std::cin >> a >> b;
std::cout << PGCD(a, b) << std::endl;
std::cout << "frac : entrez deux entiers" << std::endl;
std::cin >> a >> b;
NR fractest(a, b);
std::cout << fractest << " + " << frac3 << " = " << std::endl;
std::cout << ">> " << (fractest + frac3) << std::endl;
std::cout << ">> " << (fractest + frac3).GetNumerator() << "/" << (fractest + frac3).GetDenominator() << std::endl;
fractest = fractest + frac3;
std::cout << ">> " << fractest << std::endl;
// frac->NRset(2, 4);
NR anotherfrac;
std::cin >> anotherfrac;
std::cout << "Compare " << fractest << " and " << anotherfrac << " : ==? " << (fractest == anotherfrac) << " <? "
<< (fractest < anotherfrac) << " >=? " << (fractest >= anotherfrac) << std::endl;
std::cout << anotherfrac << " - " << *frac << " = " << anotherfrac - *frac << std::endl;
std::cout << anotherfrac << " * " << *frac << " = " << std::endl << ">> " << anotherfrac * *frac << std::endl;
fractest = anotherfrac * *frac;
std::cout << ">> " << fractest << std::endl;
fractest.Reduce();
std::cout << ">> " << fractest << std::endl;
std::cout << anotherfrac << " / " << frac2 << " = " << anotherfrac / frac2 << std::endl;
NR numNR(2, 4);
NR otherNR(3, 1);
std::cout << numNR << " - " << otherNR << " = " << std::endl;
NR subNR = numNR - otherNR;
std::cout << ">> " << (numNR - otherNR) << std::endl << ">> " << subNR << std::endl;
delete frac;*/
assert((NR {1, 5} == NR {5, 25}));
assert((NR {1, 5} != NR {4, 25}));
NR frac1 {2};
NR frac2 {1};
assert(NR {2} == NR {1} + 1);
assert(NR {1} == (NR {1, 4} + NR {3, 4}));
assert((NR {-3, -4} == NR {1, 2} + NR {1, 4}));
assert(frac1 != frac2);
assert((NR {-1, 4} == NR {1, 4} - NR {1, 2}));
assert((NR {1, -4} == NR {1, 4} - NR {1, 2}));
assert((-NR {1, 4} == NR {1, 4} - NR {1, 2}));
frac2 *= 2;
assert((NR {2} == NR {4, 3} * NR {3, 2}));
assert((NR {3, 5} == NR {4, 5} * NR {3, 4}));
assert(frac1 == frac2);
assert((NR {21, 16} == NR {7, 8} / NR {6, 9}));
assert((NR {4, 3} == NR {3, 4}.Inverse()));
}
int main(int argc, char** argv) {