Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 3 sur 3
  1. #1
    Membre confirmé
    Profil pro Matthieu
    Étudiant
    Inscrit en
    septembre 2004
    Messages
    394
    Détails du profil
    Informations personnelles :
    Nom : Matthieu
    Âge : 27
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : septembre 2004
    Messages : 394
    Points : 288
    Points
    288

    Par défaut PGCD et simplification de fraction

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    int PGCD(int a, int b){
        while(b!=0){
            int c=a%b;
            a=b;
            b=c;
        }
        return a;
    }
    On retourne le plus grand diviseur commun, au pire on auras 1 .


    Simplification de fraction :

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    void Fraction::simplification(){
        int r;
        r=PGCD(numerateur,denominateur);
        numerateur=numerateur/r;
        denominateur=denominateur/r;
        //pas de - au dénominateur
        if(denominateur<0){
            numerateur=-numerateur;
            denominateur=-denominateur;
            }
    }
    Ps : merci a Romuald Perrot pour son article Calcul du PGCD par la méthode d'Euclide

  2. #2
    Rédacteur/Modérateur
    Avatar de Melem
    Homme Profil pro Jessee Michaël Christian Edouard
    Ingénieur développement logiciels
    Inscrit en
    janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Nom : Homme Jessee Michaël Christian Edouard
    Âge : 28
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : janvier 2006
    Messages : 3 656
    Points : 8 149
    Points
    8 149

    Par défaut

    void Fraction::simplification() ? C'est une source C++ alors ...

  3. #3
    boli_971
    Invité(e)

    Par défaut

    Salut,

    Je propose la version récursive de cette fonction.
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    int pgcd(int a , int b )
    {
        int r = 0;
        // il faut a > b
        if(a < b)
        {
            int temp = a;
            a = b;
            b = temp;
        }
        /*
        En C++:
        if(a <b)
            std::swap(a, b);
        */
     
        if((r = a%b) == 0) 
            return b;
        else 
            return pgcd(b, r);
    }

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •