Un petit programme qui calcule le pgcd via l'algorithme d' euclide :o)

1/5 (4 avis)

Snippet vu 9 234 fois - Téléchargée 29 fois

Contenu du snippet

Salut à tous ... je suis nouveau ! cela fait 3 jours que je fait du C/C++ et je vous propose un petit code pas bien compliqué mais qui pourra peut etre donner des idées aux debutants .
C'est un programme qui calcule le pgcd de deux nombre via l'algorithme d' Euclide. Non seulement il donne le résultat , mais il donne en plus les etapes que l'on doit faire pour y arriver :o)
Merci de ne pas etre trop sévert , car c'est mon premier code :)
Il y a surement des trucs un peu tordu mais j'ai trouvé que ca marchait bien :)
J'attend vos suggestion.
Plopman

Source / Exemple :


/* par Plopman , permier programme :o) */
#include <math.h>
#include <stdio.h>
#include <iostream.h>

int main()
{

     cout << "Bienvenue :) Entre les deux nombres voullus pour obtenir :";
     cout << endl << "1)-Leurs PGCD";
     cout << endl << "2)-Les etapes de l'l'algorithme d'Euclide";
    /* on definit 2 nombres et on leur donne comme valeur 0 */
     double  nombre1;
     double nombre2;
     nombre1 = 0;
     nombre2 = 0;
     cout << endl << "";
/* Tant que les deux nombres ( nombre1 & nombre2 ) ne sont pas positifs , on recomence la boucle */
     while ((nombre1 < 1) || (nombre2 < 1) )
     {
     cout << endl << "Il faut entrer des nombres positifs et entier: ( pour quiter tapper 1)";
     cout << endl << "Entre le nombre 1: ->>";
     cin  >> nombre1;
     /* ici si on tappe 1 , c'est qu'on désir quitter */
     if (nombre1 == 1)  {
     return 0;
     }
     /* sinon on continue */
     else
     {
     cout << "Entre le nombre 2: ->>";
     cin  >> nombre2;
          }

/* Si nombre1 et nombre2 sont positif , on continue le prog. */
double  reste;
double p;
double  nbr1;
double  nbr2;
double  pgcd;
pgcd = nombre1/nombre2;
nbr1 = nombre1;
nbr2 = nombre2;
p = nombre1/nombre2;
reste = nombre1/nombre2;
/* Petit rapel sur l'l'algorithme d'Euclide ... le pgcd est le dernier reste non nul d'un serie de calcul, ici le reste est reste et l'avant dernier pgcd */
while ( reste >= 1)
{
pgcd = reste;
/* la fonction floor sert a prendre la partie intégrale d'un nombre a virgule */
reste = nombre1-nombre2*floor(p);
cout << endl << nombre1 << "=" << nombre2 << " X " << floor(p) << " + " << reste;
nombre1 = nombre2;
nombre2 = reste;
p = nombre1/nombre2;
}
     cout << endl << "donc Pgdc(" << nbr1 << ";" << nbr2 << ")=" << pgcd;
     cout << endl << "";
     }

}

Conclusion :


Je l'amélioerai peut être si il y a des suggestions .. Un bug subsiste , si on tappe un nombre pas entier mais je suis vraiment debutant et je ne connais pas la fonction :o)
Voila soyez pas trop mechant c'est mon 1er code et ca fait 3 jours que je script .. ;)

Plopman

A voir également

Ajouter un commentaire Commentaires
gvhecke Messages postés 65 Date d'inscription vendredi 17 octobre 2003 Statut Membre Dernière intervention 21 mai 2008
3 mars 2004 à 13:21
C'est amusant je viens de faire un compilateur pour l' Embedded C (source disponible sur ce site d'ailleurs) et j'ai tester mon compilateur avec le code C de l'algorithme d'euclide... mais un peu plus optimise que ta solution ;-)

int a;
int b;
int c;

void maint()
{
read(a); /* càd un bete cin>>a ; */
read(b); /* càd un bete cin>>b ; */
while(b)
{
c=b;
while(a>=b) /* calcul a modulo b */
a=a-b;
b=a;
a=c;
}
write(b); /* càd un bete cout<<b; */
}
Ifrit235 Messages postés 30 Date d'inscription dimanche 12 octobre 2003 Statut Membre Dernière intervention 17 juin 2004
3 mars 2004 à 11:12
j'avais fais une source identique a mes début mais qui n'utilise que
Sinon c'est pas mal pour une première source.
cs_plopman Messages postés 67 Date d'inscription dimanche 29 février 2004 Statut Membre Dernière intervention 13 septembre 2006
2 mars 2004 à 23:08
euhh oui dsl, mais il y en a aucun qui donne les étapes et je suis nouveau j'avais pas vu :(
Plopman
BruNews Messages postés 21041 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019 19
2 mars 2004 à 22:35
Salut,
pour la suite tu verifieras avant de poser que la meme chose ne s'y trouve pas deja. C'est le cas pour le PGCD et autres caculettes mode console que l'on retrouve en nombreux exemplaires.

ciao...
BruNews, Admin CS, MVP Visual C++

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.