Question bizzar

meryemm Messages postés 10 Statut Membre -  
meryemm Messages postés 10 Statut Membre -
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. Célien Messages postés 5702 Date d'inscription   Statut Membre Dernière intervention   1 995
     
    Salut,

    Une fonction ou une procédure ?
    0
  2. Heliotte Messages postés 1561 Statut Membre 92
     
    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 !
    0
    1. meryemm Messages postés 10 Statut Membre
       
      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
      0
    2. Heliotte Messages postés 1561 Statut Membre 92
       
      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 ?
      0
    3. meryemm Messages postés 10 Statut Membre
       
      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 :/
      0
    4. Heliotte Messages postés 1561 Statut Membre 92
       
      Désolé merymemm,
      Je doit avoir les yeux embrumés
      A+
      0
    5. meryemm Messages postés 10 Statut Membre
       
      tkkt ...sinon le code marche biennn merciii
      0
  3. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
     
    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,
    0
    1. meryemm Messages postés 10 Statut Membre
       
      Je te remerciiiiie :D
      0