C++ : problème d'exécution

Petitcolas -  
rameur Messages postés 135 Statut Membre -
Bonjour,

Voilà... J'ai un petit problème avec un programme destiné à calculer le PGCD de deux nombres en C++. Lors de la compilation, il n'y a aucun problème (j'utilise Dev C++). En revanche, lors de l'éxécution, Windows me demande d'envoyer un rapport d'erreur, et le programme ne fonctionne plus. Voici le code source de ce programme :

/* Calcul du PGCD de deux nombres */

/* Inclusion des bibliothèques */
#include <stdio.h>
#include <stdlib.h>


/* Déclaration des variables */
int a, b, reste, alpha, beta;

int main()
{

/* Saisie des deux nombres */
printf ("Calcul du Plus Grand Commun Diviseur (PGCD)\n\n");
printf ("Entrez les deux nombres dont vous souhaitez connaître le PGCD.\n");
printf ("Premier nombre : "), scanf ("%d\n",a);
printf ("Deuxième nombre : "), scanf ("%d\n\n",b);

/* Calcul du PGCD selon l'algorithme d'Euclide */
alpha = a, beta = b;
while (reste != 0)
{
int reste = alpha%beta;
alpha = beta, beta = reste;
}

/* Affichage du résultat */
printf ("Le PGCD de %d et de %d est %d.", a, b, beta);

system("PAUSE");
return 0;
}

Il plante lors de la saisie du premier nombre.

Je vous remercie.

4 réponses

Ravachol Messages postés 568 Statut Membre 120
 
Salut,
je pense que ça devrait aller mieux en initialisant la variable 'reste' avant d'entrer dans la boucle 'while'.

A++

La pensée ne commence qu'avec le doute.
ROGER MARTIN DU GARD
0
Ravachol Messages postés 568 Statut Membre 120
 
J'avais pas tout vu ...
Quand tu veux mettre plusieurs instructions sur la même ligne il faut les séparer avec un ';' et pas une ','.
De plus tu redéclare 'reste' dans la boucle while

La pensée ne commence qu'avec le doute.
ROGER MARTIN DU GARD
0
Ravachol Messages postés 568 Statut Membre 120
 
Et pour les scanf il faut lui passer les adresses des variables soit:
scanf ("%d\n",&a);
scanf ("%d\n\n",&b);

A++

La pensée ne commence qu'avec le doute.
ROGER MARTIN DU GARD
0
pom
 
Salut Ravachol,
sur tous les messges concernant le c++, quand il s'agit d'afficher une variable, tout le monde utilise scanf. Mais pourquoi ne pas faire (tout simplement j'ai envie de dire) cout<<ma_variable<<endl; ou bien
cout<<"entrer le 1e nombre\n";

Je trouve que la syntaxe de scanf est super compliquée par rapport à un cout

Quelle est la différence ?
Pom
0
Ravachol Messages postés 568 Statut Membre 120
 
Salut Pom,
je pense que tu veux plutôt parler de printf, pour l'affichage et non de scanf ;-)
Quoique si Petitcolas veux vraiment faire du C++ il devra aussi utiliser cin à la place de scanf pour une saisie clavier. J'ai simplement préjugé, vu son code, qu'il faisait du C avec un compilo C++.
Sinon je suis d'accord avc toi quand à l'utilisation de cout en C++

A++

La pensée ne commence qu'avec le doute.
ROGER MARTIN DU GARD
0
mohamed
 
salut,
je ne m'y connais pas bien en C++ mais j'ai trouvé un sit où il y a +ieurs exemples.
http://www.inf.enst.fr/~charon/CFacile/initiation/index.html
Bon courage.
Merci
0
rameur Messages postés 135 Statut Membre 21
 
ton code :
printf ("Premier nombre : "), scanf ("%d\n",a);
printf ("Deuxième nombre : "), scanf ("%d\n\n",b);

corrige :
printf ("Premier nombre : "), scanf ("%d\n",&a);
printf ("Deuxième nombre : "), scanf ("%d\n\n",&b);

remarque scanf prend la reference de la variable et non une copie de celle-ci , le & avant a ou b indique le passage par reference
0