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

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

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.