Classe fraction

Soyez le premier à donner votre avis sur cette source.

Vue 7 893 fois - Téléchargée 688 fois

Description

Voici une classe fraction permettant de faire la majeure partie des opérations usuelles sur des fractions.

Source / Exemple :


class Fraction
{
   int Num;
   int Denom;
public :
//constructeurs
   Fraction(const int, const int);
   Fraction(const int);
   Fraction();
//Opérateuns d'action
   Fraction& operator*(const Fraction&);
   Fraction& operator*(const int&);
   Fraction& operator+(const Fraction&);
   Fraction& operator+(const int&);
   Fraction& operator-(const Fraction&);
   Fraction& operator-(const int&);
   Fraction& operator/(const Fraction&);
   Fraction& operator/(const int&);
   Fraction& operator=(const Fraction&);
   Fraction& operator=(const int&);
//Opérateurs de test
   bool operator>(const Fraction&);
   bool operator>(const int&);
   bool operator>=(const Fraction&);
   bool operator>=(const int&);
   bool operator<(const Fraction&);
   bool operator<(const int&);
   bool operator<=(const Fraction&);
   bool operator<=(const int&);
   bool operator==(const Fraction&);
   bool operator==(const int&);
   bool operator!=(const Fraction&);
   bool operator!=(const int&);
//Fonctions amies
   friend ostream& operator<<(ostream&, Fraction&);   //opérateurs de flux (ex : cout)
   friend istream& operator>>(istream& , Fraction&);  //opérateurs de flux (ex : cin)
   friend int Pgcd(const int&,const int&); // trouve le plus grand diviseur commun entre i1 et i2
//Fonctions diverses
   Fraction& Simp();                      //Simplifie une fraction
   Fraction& Puis(const int&);            //comme un opérateur puissance
   Fraction& Inv();                       //Inverse la fraction
   int Signe();                           // 1 = positif ou nul      -1 = négatif
   void MemeDenom(Fraction&,Fraction&);   // met les deux fractions au meme dénominateur
   float ValAprox();
};

Codes Sources

A voir également

Ajouter un commentaire Commentaires
Messages postés
14737
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
14 novembre 2020
148
Nickel, j'en avait besoin pour un TP, ton code m'a beaucoup aidé. Merci.
Messages postés
3006
Date d'inscription
dimanche 14 avril 2002
Statut
Membre
Dernière intervention
31 décembre 2008

bool Fraction::operator==(const Fraction &F)
{
Fraction F1(*this),F2(F);
return (F1.ValAprox() == F2.ValAprox());
}

je ne ferais pas comme ça, compare plutôt Num et Denom de this et de F (pq créer F1 et F2? ça fait deux créations d'objets en trop)

je suppose qu'il y a le même genre de code à modifier ailleurs ds la classe, j'ai pas regardé.
Messages postés
3011
Date d'inscription
jeudi 26 septembre 2002
Statut
Membre
Dernière intervention
27 novembre 2004
7
autre chose que j'avais pas vu

Fraction& operator=(const Fraction&);

c'est à dire l'operateur d'affectation, ne le redefinie pas, tu pourra pas faire plus optimisé que celui crée par le compilateur par defaut
Messages postés
1
Date d'inscription
dimanche 16 mai 2004
Statut
Membre
Dernière intervention
17 mai 2004

Merci je fais ces modifs ....

Sinon, j'ai un pb sur la division ... je la règle et dirai quand je poserai une nouvelle version qui ne tardera pas trop .... ;)

MWT_Krantset
Messages postés
3011
Date d'inscription
jeudi 26 septembre 2002
Statut
Membre
Dernière intervention
27 novembre 2004
7
salut,

pour la fonction puissance, tu peux surcharger l'operateur ^, je trouve ca plus explicite et c'est presque rien a changer
la methode MemeDenom pourrait etree une methode de classe je pense

la classe est assez fonctionnelle, c'est pas mal

ps : Fraction(const int, const int); le const est inutile, tu passe les int par copie

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.