Question bizzar

Fermé
meryemm Messages postés 7 Date d'inscription dimanche 28 octobre 2012 Statut Membre Dernière intervention 30 octobre 2012 - 28 oct. 2012 à 23:14
meryemm Messages postés 7 Date d'inscription dimanche 28 octobre 2012 Statut Membre Dernière intervention 30 octobre 2012 - 30 oct. 2012 à 00:06
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

Célien Messages postés 5729 Date d'inscription jeudi 8 mai 2008 Statut Membre Dernière intervention 9 septembre 2021 1 993
28 oct. 2012 à 23:41
Salut,

Une fonction ou une procédure ?
0
Heliotte Messages postés 1491 Date d'inscription vendredi 26 octobre 2012 Statut Membre Dernière intervention 28 janvier 2013 92
29 oct. 2012 à 07:44
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
meryemm Messages postés 7 Date d'inscription dimanche 28 octobre 2012 Statut Membre Dernière intervention 30 octobre 2012
29 oct. 2012 à 15:30
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
Heliotte Messages postés 1491 Date d'inscription vendredi 26 octobre 2012 Statut Membre Dernière intervention 28 janvier 2013 92
Modifié par Heliotte le 29/10/2012 à 22:00
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
meryemm Messages postés 7 Date d'inscription dimanche 28 octobre 2012 Statut Membre Dernière intervention 30 octobre 2012
29 oct. 2012 à 23:50
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
Heliotte Messages postés 1491 Date d'inscription vendredi 26 octobre 2012 Statut Membre Dernière intervention 28 janvier 2013 92
30 oct. 2012 à 00:03
Désolé merymemm,
Je doit avoir les yeux embrumés
A+
0
meryemm Messages postés 7 Date d'inscription dimanche 28 octobre 2012 Statut Membre Dernière intervention 30 octobre 2012
30 oct. 2012 à 00:06
tkkt ...sinon le code marche biennn merciii
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 841
29 oct. 2012 à 08:49
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
meryemm Messages postés 7 Date d'inscription dimanche 28 octobre 2012 Statut Membre Dernière intervention 30 octobre 2012
29 oct. 2012 à 15:31
Je te remerciiiiie :D
0