Calculer le pgcd de 2 nombres avec 2 algorithmes différents [borland c++]

Contenu du snippet

Ce petit programme (mon premier eh oui je debute) permet de calculer le PGCD de deux nombres en utilisant l'algorithme d'Euclide ou l'algorithme par soustractions successives ( un peu moins connu mais enfin...)
N'hésitez pas à poster vos remarques, je suis certain qu'elles m'aideront à progresser

Source / Exemple :


// Le but de ce programme : calculer le PGCD de deux nombres en utilisant
//l'algorithme d'Euclide et l'algorithme par soustractions successives.
//Je suis débutant et c'est mon premier programme alors soyez indulgents!!
//Mais surtout n'hésitez pas à m'aider à l'améliorer!
#include <iostream.h>
void Euclide(int a, int b);
void Soustraction(int a, int b);    //Prototypes
int main()
{
while(1)
{
cout <<"\t\t*****Calcul de PGCD*****\n";
int a, b, choix, fin ;
cout <<"Choisissez les deux nombres dont vous voulez déterminer le PGCD\n";
cin >> a;
cin >> b;
cout <<"Vous avez le choix entre l'algorithme d'Euclide et \n";
cout <<"l'algorithme par soustractions successives\n";
cout <<"Tapez 1 pour l'agorithme d'Euclide,\n";
cout <<"2 pour l'algorithme par soustractions successives\n";
cin >> choix;
if (choix == 1)
Euclide(a,b) ;
else if (choix == 2)
Soustraction(a,b);
else
cout <<"Erreur : 1 ou 2\n";

cout <<"Voulez vous continuer (1) ou arreter (autre chiffre) ?\n";
cin >> fin ;
if (fin == 1)
continue;
else
break;
}

return 0;
}

void Euclide (int a, int b)
{
int reste = a % b;
for ( ; reste ;a = b, b = reste, reste = a % b)  /* Dans la 1ERE VERSION
l'instruction for érait de type ( ; reste !=0 ; a =b, b = reste, reste = a %b)
mais j'ai lu dans un livre depuis que reste != 0 est une redondance*/
{
cout <<"A : "<<a <<"\t\tB : " <<b <<"\t\tReste : "<<reste <<endl;
}
cout <<"A : "<<a <<"\t\tB : " <<b <<"\t\tReste : "<<reste <<endl;
cout <<"Le PGCD de A et B est "<<b <<".\n";

}

void Soustraction (int a, int b)
{
for (; a !=b ; )
{
if ( a >= b )
{a = a - b ;
cout <<"A : "<<a <<"\t\tB : " <<b <<"\t\tOpération effectuée : a-b"<<endl;
}
else if ( a <=b )
{
b = b - a  ;
cout <<"A : "<<a <<"\t\tB : " <<b <<"\t\tOpération effectuée : b-a"<<endl;
}
else
cout <<"test" ;  // Ligne totalement inutile puisque la boucle s'arrete avant
}					  // mais enfin elle ne fait de mal à personne lol

cout <<"Le PGCD de A et B est : "<<a <<endl;
}

Conclusion :


29/04 : nouvelle version avec un petit remplacement dans la boucle for

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.