#include #include using namespace std; class Rational { public: //constructeur avec des parametres par defaut Rational(int n=0, int d=1); void Read(); void Print(); private: //donnees membres privees int num; int den; //methodes privees void Reduce(); }; //les deux cponstructeurs suivantes sont equivalentes /*Rational::Rational (int n, int d) { num = n; den = d; Reduce(); } */ Rational::Rational (int n, int d) : num (n), den (d) { Reduce(); } //algorithme d'Euclide pour trouver le plus grand diviseur commun void Rational::Reduce() { int m = abs(num); int n = abs(den); if (m < n) { int temp = m; m = n; n = temp; } int r; while (n > 0) { r = m % n; m = n; n = r; } int gdc = m; num = abs(num) / gdc; if (num*den<0) num = -num; den = abs(den) / gdc; } void Rational::Read() { cin >> num >> den; Reduce (); } void Rational::Print() { cout << num << "/" << den << endl; } int main() { Rational q(36, 2); cout << "q = "; q.Print(); Rational r(5, 7); cout << "r = "; r.Print(); Rational v; cout << "Entrez la fraction (un couple des entiers): " << endl; v.Read(); v.Print(); return 0; }