Précédent   Forum du club des développeurs et IT Pro > C et C++ > C > Contribuez
Contribuez Proposez vos articles, cours, tutoriels, FAQ, sources, et autres ressources pour la rubrique C.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 09/04/2009, 10h54   #1
paterson
Membre confirmé
 
Matthieu
Étudiant
Inscription : septembre 2004
Messages : 393
Détails du profil
Informations personnelles :
Nom : Matthieu
Âge : 26
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : septembre 2004
Messages : 393
Points : 295
Points : 295
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
paterson est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/06/2009, 09h20   #2
Melem
Rédacteur/Modérateur
 
Avatar de Melem
 
Homme Jessee Michaël Christian Edouard
Ingénieur développement logiciels
Inscription : janvier 2006
Messages : 3 661
Détails du profil
Informations personnelles :
Nom : Homme Jessee Michaël Christian Edouard
Âge : 27
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 661
Points : 8 435
Points : 8 435
Envoyer un message via MSN à Melem
void Fraction::simplification() ? C'est une source C++ alors ...
Melem est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/06/2009, 01h28   #3
boli_971
Invité(e)
 
Messages : n/a
Détails du profil
Informations forums :
Messages : n/a
Points : 0
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);
}
  Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 10h34.


 
 
 
 
Partenaires

Hébergement Web