#include using namespace std; class Fraction { public: Fraction(int num = 0, int den = 1); // ~Fraction(); // On verra plus tard ce que ça veut dire void affiche() const; void simplifie(); bool estEgalA(Fraction f) const; void affecteLaSomme(Fraction const &f1, Fraction const &f2); private: int numerateur; int denominateur; }; Fraction::Fraction(int num, int den) : numerateur (num), denominateur (den) { simplifie(); } /*Fraction::~Fraction() { cout << "Destructeur" << endl; }*/ void Fraction::affecteLaSomme(Fraction const &f1, Fraction const &f2) { numerateur = f1.numerateur*f2.denominateur + f2.numerateur*f1.denominateur; denominateur = f1.denominateur*f2.denominateur; } void Fraction::affiche() const { cout << numerateur << '/' << denominateur << endl; } int pgcd(int m, int n) { while (m>0) { if( n > m ) { swap(m, n); } m -= n; } return n; } void Fraction::simplifie() { int r = pgcd(numerateur, denominateur); numerateur /= r; denominateur /= r; } bool Fraction::estEgalA(Fraction f) const { Fraction me = *this; me.simplifie(); f.simplifie(); return me.numerateur == f.numerateur && me.denominateur == f.denominateur; } int main() { Fraction f1(5, 4); Fraction f2(5, 2); Fraction f3; f3.affecteLaSomme (f1, f2); f3.affiche(); if(f3.estEgalA(Fraction(15,4))) { cout << "Les fractions sont identiques" << endl; } f3.simplifie(); f3.affiche(); }