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
    0
    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
      0
      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
        0
        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
          0
        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
          0
      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
        0
        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
          0