Compare commits
2 Commits
222d723675
...
9d3d78fe16
| Author | SHA1 | Date | |
|---|---|---|---|
| 9d3d78fe16 | |||
| 750781aa5c |
@@ -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);
|
||||||
|
|||||||
10
src/NR.cpp
10
src/NR.cpp
@@ -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};
|
||||||
|
}
|
||||||
@@ -3,48 +3,23 @@
|
|||||||
#include <cassert>
|
#include <cassert>
|
||||||
|
|
||||||
static void test() {
|
static void test() {
|
||||||
/*NR* frac = new NR;
|
assert((NR {1, 5} == NR {5, 25}));
|
||||||
NR frac2(3);
|
assert((NR {1, 5} != NR {4, 25}));
|
||||||
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;*/
|
|
||||||
|
|
||||||
NR frac1 {2};
|
assert(NR {2} == NR {1} + 1);
|
||||||
NR frac2 {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) {
|
int main(int argc, char** argv) {
|
||||||
|
|||||||
Reference in New Issue
Block a user