TP Fraction

Objectif: construction d'une classe fraction.

Une fraction (ou nombre rationnel ) est un ensemble ordonné de deux entiers - numérateur et dénominateur - . Nous nous proposons ici de définir une classe fraction munie de ses principales opérations.

Question 1.

Travail à faire

Solution

Question 2.

On désire pouvoir instancier une fraction de trois manières différentes:

  1. Fraction f1 = new Fraction ( 12, 7); // dans ce cas le numérateur vaudra 12 et le dénominateur 7
  2. Fraction f2 = new Fraction(); // fraction nulle de dénominateur 1
  3. Fraction f3 = new Fraction ( 9 ); // fraction dont le numérateur vaut 9 et le dénominateur 1

Travail à faire.

Pour tester la fraction, vous déclarerez une classe publique AppFraction avec une seule méthode Main. Enregistrer le fichier AppFraction.cs dans un répertoire Fraction. Compiler.

Question 3. Gestion de l'affichage.

Afin de ne pas mélanger ce qui concerne les fractions et leurs opérations d'une part et l'affichage d'autre part on vous propose de créer une classe Ecran qui assurera cette responsabilité d'affichage. Cette classe ne contiendra qu'une seule méthode statique Affiche(Fraction f).

Travail à faire.

Solution

class AppFraction{
           static void Main(){
                    Fraction f = new Fraction(12,7);
                    Fraction f1 = new Fraction(9);
                    Fraction f2 = new Fraction();
                    Ecran.Affiche(f);
                    Ecran.Affiche(f1);
                    Ecran.Affiche(f2);
            }
}

affiche :

Question 4 Opérations unaires

Fraction f = new Fraction(4,7);

f.Oppose();                               // inverse le signe de la fraction, qui devient -4/7

Fraction f = new Fraction(4,7);

f.Inverse();                                 // inverse numérateur et dénominateur, qui devient 7/4

Question 5 opérateurs relationnels

Fraction f = new Fraction(11,7);

Fraction f1 = new Fraction(5,4);

f.Superieur( f1 ) retourne vrai

f.Inferieur( f1 ) retourne faux.

Fraction f = new Fraction(11,7);

Fraction f1 = new Fraction(22,14);

f.Egal ( f1 ) retourne vrai.

Question 6 pgcd

Algorithme du pgcd de deux nombres (Euclide).

soit a et b deux nombres

Tant que a est différent de b, si a est supérieur à b, a prend comme valeur a-b, sinon b prend la valeur b-a.

Il faudra par ailleurs s'assurer que numérateur et dénominateur ne sont pas nuls et ne traiter que deux nombres positifs.

Tester avec une fraction construite avec comme numérateur -75 et comme dénominateur 90 (doit retourner 15)

Solution

 

Question 7 Réduction et signe de la fraction

La méthode privée reduire() réduit la fraction courante en divisant numérateur et dénominateur par leur pgcd et traite le problème du signe de la fraction, le signe de la fraction est le signe de son numérateur, si le numérateur et le dénominateur sont négatifs, la fraction n'a pas de signe (implicitement +).

Fraction f3 = new Fraction(120,-150);

Ecran.affiche(f3);                                 // affiche -4/5

Question 8 Opérations à deux opérandes.

On vous fournit le diagramme définitif de la classe Fraction :

Travail à faire