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

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

  1. 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
    1. 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
      1. 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
        1. 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
        2. 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
      2. 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
        1. 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