Classe fraction

Soyez le premier à donner votre avis sur cette source.

Vue 10 730 fois - Téléchargée 942 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
NHenry Messages postés 15050 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 30 mars 2023 156
17 déc. 2004 à 11:51
Nickel, j'en avait besoin pour un TP, ton code m'a beaucoup aidé. Merci.
cs_Kirua Messages postés 3006 Date d'inscription dimanche 14 avril 2002 Statut Membre Dernière intervention 31 décembre 2008
13 juil. 2004 à 12:55
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é.
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
20 mai 2004 à 09:10
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
MWT_Krantset Messages postés 1 Date d'inscription dimanche 16 mai 2004 Statut Membre Dernière intervention 17 mai 2004
17 mai 2004 à 19:08
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
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
16 mai 2004 à 20:04
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.