Question bizzar

Bonjour,

j'ai une partie du code qui se répète deux fois et je veux savoir si par hasard y a pas un moyen de régler ça (par exemple avoir une variable qui peux remplacer cette partie du code et l'appeler après au lieu de réécrire tout le code une deuxième fois)

3 réponses

  1. Bonjour meryemm,
    Pouvez-vous nous montrer cette partie de code ainsi que les deux appels de procédure/fonction ?
    En général, un code qui est utilisé plus d'une fois est placé dans une procédure ou une fonction si celui-ci donne une valeur.
    Donc, pour répondre à la question, théoriquement oui !
    1. bon je te montre tout mon code , la réponse était banal xD j'ai mis la partie du code qui se répète dans une fonction et je l'ai appelé à l'endroit où il fallait le metter xp j'ai posé des commentaires pour que ça soit un petit peu clair x/ :

      #include <time.h>
      #include <stdlib.h>
      #include <stdio.h>
      #include <conio.h>
      #include <Windows.h>

      //l'initialisation de tous les variables du prog
      int nbrMAX = 100; const int MIN = 1 ;
      int nombreMystere=0 , nombreAecrire=0, comp=0;
      char rep= ' ' ;
      int j;
      int niveau;

      //Voila la fonction qu'on va appeler pour ne pas avoir des tonnes de lignes..je l'ai nommé "prog" comme vous voyez :
      void prog ()
      {
      do
      {

      printf ("Saisir un Nombre Aleatoir \n");
      scanf("%d", &nombreAecrire);

      comp++;
      if (nombreAecrire < nombreMystere)
      printf(" c'est +++++\n ");
      else if (nombreAecrire > nombreMystere)
      printf (" c'est ----- \n");
      else
      printf("Bravoo vous avez trouvé le nombre mystere en %d :\n" ,comp, "COUPS!!\n");
      }

      while(nombreAecrire != nombreMystere);

      while ( rep !='n' && rep!='o')
      {
      printf ("voulez-vous recommencer le jeu???");
      getchar();
      scanf("%c" ,&rep);
      getchar();
      }

      }
      // ON COMMENCE ..
      int main()
      {

      // les niveaux de difficulté à choisis
      printf ("NIVEAU DE DIFFICULTE \n\n");
      printf ("1__ de 1 jusqu'a 100 \n");
      printf ("2__ de 1 jusqu'a 1000 \n");
      printf ("3__ de 1 jusqu'a 10000 \n");
      scanf ("%d" , &niveau);
      if (niveau ==1)
      {
      printf ("le niveau FACILE \n");
      nbrMAX=100;
      }
      else if (niveau ==2)
      {
      printf ("le niveau MOYEN \n");
      nbrMAX=1000;
      }
      else if (niveau ==3)
      {
      printf ("le niveau DIFFICILE \n");
      nbrMAX=10000;
      }
      else
      {
      printf ("vous n'avez pas choisis de niveau \n");
      }

      //Le mode du jeu à choisir
      printf ("MENU : \n\n");
      printf ("1_mode: un joueur.\n");
      printf ("2_mode: deux joueurs.\n");
      scanf("%d",&j);

      if (j==1) //Si le joueur choisis le mode "un joueur"
      {

      srand(time(NULL));
      nombreMystere = (rand() % (nbrMAX - MIN + 1)) + MIN;
      do
      {
      //VOILA ICI ICI C MON PREMIER APPEL DE LA FONCTION
      prog();
      }
      while ( rep =='o');
      printf ("au revoir!!\n");
      }

      //Si le joueur choisis le mode "deux joueurs"
      else if (j==2)
      {
      do
      {
      printf ("Saisir le nombre mystere \n");
      scanf("%d", &nombreMystere);

      // ICI C'EST LE 2eme APPEL DE LA FONCTION prog();
      }
      while ( rep =='o');
      printf ("au revoir!!\n");
      }

      system("pause");
      }

      Ce n'est qu'un petit programme il surement pas très amélioré mais bon , je ne suis qu'un débutant j'éspère que c'est clair :p
    2. Bonsoir meryemm,

      Voir le commentaire en gras:

      //Si le joueur choisis le mode "deux joueurs"  
       else if (j==2)  
       {  
        do  
        {  
         printf ("Saisir le nombre mystere \n");  
         scanf("%d", &nombreMystere);  
         // ICI C'EST LE 2eme APPEL DE LA FONCTION prog();  
         prog();  // ne pas oublier de l'ajouter !  
        } while ( rep =='o');  
        printf ("au revoir!!\n");  
       }
      Ca ma l'air parfait
      Donc, le programme est ok maintenant ?
    3. Aaah ui Heliotte , pour ton commentaire t'as pas remarqué que j'ai ecris prog(); ^^" ...regarde mon commentaire : // ICI C'EST LE 2eme APPEL DE LA FONCTION....la fonction est juste après :/
    4. Désolé merymemm,
      Je doit avoir les yeux embrumés
      A+
    5. tkkt ...sinon le code marche biennn merciii
  2. Contributeur
    Bonjour,

    Effectivement, la partie que tu souhaites répéter doit se trouver dans une fonction.
    Par exemple :
    int main (void) {
       double d;
       puts("d=");
       scanf("%lf",&d);
       printf("d=%f\n",d);
       puts("d=");
       printf("%lf",&d);
       printf("d=%f\n",d);
       return 0;
    }
    

    Tu peux remplacer les lignes puts/scanf/printf par :
    void saisie(double *d) {
       puts("d=");
       scanf("%lf",d);
       printf("d=%f\n",*d);
    }
     

    Ainsi, tu n'as plus qu'à appeler saisie(&d); pour appeler puts/scanf/printf.
    La fonction saisie remplace une partie de code.

    Note : je n'ai pas essayé mon code, il y a peut-être des petites erreurs qui trainent. Mais l'idée reste correcte.

    Cordialement,
    1. Je te remerciiiiie :D