Probleme d'appel de fonction

Résolu
erzascarlette -  
 erzascarlette -
Bonjour,
le programme affiche du vide avec avoir enregistrer les donnees du joueurs l'appel des fonctions ne s'effectue pas pourtant il n' ya aucun problemes de compilation je suppose que ca doit etre un bug
pouvez vous m'aider svp?????



main 
#include <stdio.h> 
#include <stdlib.h> 
#include <time.h> 
#include "donnees.h" 
void presentation(); 
void joueur1(); 
void joueur2(); 
void joueur3(); 
int main() 
{ 
int const min =1; 
int nbrejoueur=0,niveau=0,nbrealeatoire=0,nbre=0,nbre1=0,nbre2=0,nbre3=0,coups=0,max=0; 
int i=0; 
srand(time(NULL)); 
presentation(); 
system("color BC"); 
printf("\t\t\t\t\t MODE D'EMPLOI\n\n\n"); 
printf("Chers joueurs vous devez choisir le nombres de joueurs desirant joueurs ce nombre etant inferieur ou egale a 3.\n Ensuite choisir le niveau de difficulte i.e. facile,moyen ou difficile\n Chaque joueurs doit entrer ces donnees afin qu'il soit enregistrer\n Le principe du jeu etant d'etre le 1er a deviner le nombre aleatoire choisi par le programme\n et ceci en tres peu de tentatives\n"); 
do 
{ 
printf("\n\n\n\nCOMBIEN DE JOUEURS: "); 
scanf("%d",&nbrejoueur); 
printf("\n\nNIVEAU: "); 
scanf("%d",&niveau); 
} while (nbrejoueur<1 || nbrejoueur>3 || niveau<1 || niveau>3); 
donnees joueur [nbrejoueur]; 
//fflush(stdin); 
for (i=1;i<=nbrejoueur;i++) 
{ 
printf("ENTRER LES DONNEES DU JOUEURS NUMERO %d\n\n",i); 
fflush(stdin); 
printf("\n PSEUDO: "); 
gets(joueur[i].pseudo); 
fflush(stdin); 
printf("\n\nSEXE: "); 
gets(joueur[i].sexe); 
fflush(stdin); 
} 
if (nbrejoueur == 1) 
{ 
joueur1(); 
} 
else if (nbrejoueur == 2) 
{ 
joueur2(); 
} 
else if (nbrejoueur == 3) 
{ 
joueur3(); 
} 
else 
{ 
printf("la limite est de 3 joueurs maximum.\n"); 
} 
return 0; 
} 
fonction joueur1 
#include <stdio.h> 
#include <stdlib.h> 
#include <time.h> 
#include "donnees.h" 
void joueur1() 
{ 
int const min =1; 
int nbrejoueur=0,niveau=0,nbrealeatoire=0,nbre=0,coups=0,max=0; 
if (nbrejoueur==1 && niveau==1) 
{ 
max=10; 
printf("\t\t NIVEAU: FACILE\n\nNOMBRE DE JOUEUR: 1\n"); 
printf("CHOIX DU NOMBRE PAR LE JEU\n\n"); 
nbrealeatoire=((rand()%(max-min+1))+min); 
printf("A VOUS DE JOUER\n"); 
} 
else if (nbrejoueur==1 && niveau==2) 
{ 
max=1000; 
printf("\t\t NIVEAU: MOYEN\n\nNOMBRE DE JOUEUR: 1\n"); 
printf("CHOIX DU NOMBRE PAR LE JEU\n\n"); 
nbrealeatoire=((rand()%(max-min+1))+min); 
printf("A VOUS DE JOUER\n"); 
} 
else if (nbrejoueur==1 && niveau==3) 
{ 
max=100000; 
printf("\t\t NIVEAU: DIFFICILE\n\nNOMBRE DE JOUEUR: 1\n"); 
printf("CHOIX DU NOMBRE PAR LE JEU\n\n"); 
nbrealeatoire=((rand()%(max-min+1))+min); 
printf("A VOUS DE JOUER\n"); 
} 
do 
{ 
scanf("%d",&nbre); 
coups++; 
if (nbre<nbrealeatoire) 
{ 
printf("NOMBRE INFERIEUR AU NOMBRE ALEATOIRE\n\nSAISIE UN NOMBRE SUPERIEUR: "); 
} 
else if (nbre>nbrealeatoire) 
{ 
printf("NOMBRE SUPERIEUR AU NOMBRE ALEATOIRE\n\nSAISIE UN NOMBRE INFERIEUR: "); 
} 
else 
{ 
printf("FELICITATION VOUS AVEZ TROUVE LE BON NUMERO EN %d COUPS\n\n LE NOMBRE ALEATOIRE EST : %d\n\n",coups,nbrealeatoire); 
} 
} while (nbre != nbrealeatoire); 
} 
fonction joueur2 
#include <stdio.h> 
#include <stdlib.h> 
#include <time.h> 
#include "donnees.h" 
void comparaison(); 
void joueur2() 
{ 
int const min =1; 
int nbrejoueur=0,niveau=0,nbrealeatoire=0,nbre=0,coups=0,max=0; 
int i=0; 
if (nbrejoueur==2 && niveau==1) 
{ 
max=10; 
printf("\t\t NIVEAU: FACILE\n\nNOMBRE DE JOUEUR: 2\n"); 
printf("CHOIX DU NOMBRE PAR LE JEU\n\n"); 
nbrealeatoire=((rand()%(max-min+1))+min); 
printf("A VOUS DE JOUER\n"); 
} 
else if (nbrejoueur==2 && niveau==2) 
{ 
max=1000; 
printf("\t\t NIVEAU: MOYEN\n\nNOMBRE DE JOUEUR: 2\n"); 
printf("CHOIX DU NOMBRE PAR LE JEU\n\n"); 
nbrealeatoire=((rand()%(max-min+1))+min); 
printf("A VOUS DE JOUER\n"); 
} 
else if (nbrejoueur==2 && niveau==3) 
{ 
max=100000; 
printf("\t\t NIVEAU: DIFFICILE\n\nNOMBRE DE JOUEUR: 2\n"); 
printf("CHOIX DU NOMBRE PAR LE JEU\n\n"); 
nbrealeatoire=((rand()%(max-min+1))+min); 
printf("A VOUS DE JOUER\n"); 
} 
comparaison(); 
} 
fonction joueur3 
#include <stdio.h> 
#include <stdlib.h> 
#include <time.h> 
#include "donnees.h" 
void comparaison(); 
void joueur3() 
{ 
int const min =1; 
int nbrejoueur=0,niveau=0,nbrealeatoire=0,nbre=0,coups=0,max=0; 
int i=0; 
if (nbrejoueur==3 && niveau==1) 
{ 
max=10; 
printf("\t\t NIVEAU: FACILE\n\nNOMBRE DE JOUEUR: 3\n"); 
printf("CHOIX DU NOMBRE PAR LE JEU\n\n"); 
nbrealeatoire=((rand()%(max-min+1))+min); 
printf("A VOUS DE JOUER\n"); 
} 
else if (nbrejoueur==3 && niveau==2) 
{ 
max=1000; 
printf("\t\t NIVEAU: MOYEN\n\nNOMBRE DE JOUEUR: 3\n"); 
printf("CHOIX DU NOMBRE PAR LE JEU\n\n"); 
nbrealeatoire=((rand()%(max-min+1))+min); 
printf("A VOUS DE JOUER\n"); 
} 
else if (nbrejoueur==3 && niveau==3) 
{ 
max=100000; 
printf("\t\t NIVEAU: DIFFICILE\n\nNOMBRE DE JOUEUR: 3\n"); 
printf("CHOIX DU NOMBRE PAR LE JEU\n\n"); 
nbrealeatoire=((rand()%(max-min+1))+min); 
printf("A VOUS DE JOUER\n"); 
} 
comparaison(); 
} 
fonction comparaison 
#include <stdio.h> 
#include <stdlib.h> 
#include <time.h> 
#include "donnees.h" 
void comparaison() 
{ 
int nbrejoueur=0,nbrealeatoire=0,nbre=0,coups=0; 
int i=0; 
do 
{ 
for (i=0;i<nbrejoueur;i++) 
{ 
printf("JOUEUR %d\n\n choix[%d]= ",(i+1),(i+1)); 
scanf("%d",&nbre); 
} 
coups++; 
if (nbre<nbrealeatoire) 
{ 
printf("NOMBRE INFERIEUR AU NOMBRE ALEATOIRE\n\nSAISIE UN NOMBRE SUPERIEUR: "); 
} 
else if (nbre>nbrealeatoire) 
{ 
printf("NOMBRE SUPERIEUR AU NOMBRE ALEATOIRE\n\nSAISIE UN NOMBRE INFERIEUR: "); 
} 
else 
{ 
printf("FELICITATION VOUS AVEZ TROUVE LE BON NUMERO EN %d COUPS\n\n LE NOMBRE ALEATOIRE EST : %d\n\n",coups,nbrealeatoire); 
} 
} while (nbre != nbrealeatoire); 
} 
fichiers headers 
#ifndef DONNEES_H_INCLUDED 
#define DONNEES_H_INCLUDED 
typedef struct donnees donnees; 
struct donnees 
{ 
char pseudo[50]; 
char sexe[10]; 
}; 
#endif // DONNEES_H_INCLUDED

1 réponse

  1. Dalfab Messages postés 638 Date d'inscription   Statut Membre Dernière intervention   102
     
    Bonjour,

    Les fonctions joueurX() initialisent toutes le niveau à 0, puis recherchent s'il vaut 1, 2 ou bien 3.
    Il faut passer des paramètres aux fonctions (par exemple le niveau)
    0
    1. erzascarlette
       
      j'ai fait ce que vous avez proposer mais rien a changer a part cette erreur qui s'affiche
      warning variable nbrealeatoire set but not use

      voici le code modifier

      main
      #include <stdio.h> 
      #include <stdlib.h> 
      #include <time.h> 
      #include "donnees.h" 
      
      
      
      void presentation(); 
      int joueur1(int niveau); 
      int joueur2(int niveau); 
      int joueur3(int niveau); 
      
      int main() 
      { 
      int nbrejoueur=0; 
      int i=0; 
      srand(time(NULL)); 
      
      presentation(); 
      system("color BC"); 
      printf("\t\t\t\t\t MODE D'EMPLOI\n\n\n"); 
      printf("Chers joueurs vous devez choisir le nombres de joueurs desirant joueurs ce nombre etant inferieur ou egale a 3.\n Ensuite choisir le niveau de difficulte i.e. facile,moyen ou difficile\n Chaque joueurs doit entrer ces donnees afin qu'il soit enregistrer\n Le principe du jeu etant d'etre le 1er a deviner le nombre aleatoire choisi par le programme\n et ceci en tres peu de tentatives\n"); 
      
      int niveau=0; 
      do 
      { 
      printf("\n\n\n\nCOMBIEN DE JOUEURS: "); 
      scanf("%d",&nbrejoueur); 
      printf("\n\nNIVEAU: "); 
      scanf("%d",&niveau); 
      } while (nbrejoueur<1 || nbrejoueur>3 || niveau<1 || niveau>3); 
      
      donnees joueur [nbrejoueur]; 
      //fflush(stdin); 
      for (i=1;i<=nbrejoueur;i++) 
      { 
      printf("ENTRER LES DONNEES DU JOUEURS NUMERO %d\n\n",i); 
      fflush(stdin); 
      printf("\n PSEUDO: "); 
      gets(joueur[i].pseudo); 
      fflush(stdin); 
      printf("\n\nSEXE: "); 
      gets(joueur[i].sexe); 
      fflush(stdin); 
      } 
      if (nbrejoueur == 1) 
      { 
      joueur1(niveau); 
      } 
      else if (nbrejoueur == 2) 
      { 
      joueur2(niveau); 
      } 
      
      else if (nbrejoueur == 3) 
      { 
      joueur3(niveau); 
      } 
      
      else 
      { 
      printf("la limite est de 3 joueurs maximum.\n"); 
      } 
      
      return 0; 
      } 
      
      
      fonction joueurs 1 
      
      #include <stdio.h> 
      #include <stdlib.h> 
      #include <time.h> 
      #include "donnees.h" 
      
      int joueur1(int niveau) 
      { 
      
      int const min =1; 
      int nbrejoueur=0,nbrealeatoire=0,nbre=0,coups=0,max=0; 
      
      if (nbrejoueur==1 && niveau==1) 
      { 
      max=10; 
      printf("\t\t NIVEAU: FACILE\n\nNOMBRE DE JOUEUR: 1\n"); 
      printf("CHOIX DU NOMBRE PAR LE JEU\n\n"); 
      nbrealeatoire=((rand()%(max-min+1))+min); 
      printf("A VOUS DE JOUER\n"); 
      } 
      else if (nbrejoueur==1 && niveau==2) 
      { 
      max=1000; 
      printf("\t\t NIVEAU: MOYEN\n\nNOMBRE DE JOUEUR: 1\n"); 
      printf("CHOIX DU NOMBRE PAR LE JEU\n\n"); 
      nbrealeatoire=((rand()%(max-min+1))+min); 
      printf("A VOUS DE JOUER\n"); 
      } 
      else if (nbrejoueur==1 && niveau==3) 
      { 
      max=100000; 
      printf("\t\t NIVEAU: DIFFICILE\n\nNOMBRE DE JOUEUR: 1\n"); 
      printf("CHOIX DU NOMBRE PAR LE JEU\n\n"); 
      nbrealeatoire=((rand()%(max-min+1))+min); 
      printf("A VOUS DE JOUER\n"); 
      } 
      do 
      { 
      scanf("%d",&nbre); 
      coups++; 
      if (nbre<nbrealeatoire) 
      { 
      printf("NOMBRE INFERIEUR AU NOMBRE ALEATOIRE\n\nSAISIE UN NOMBRE SUPERIEUR: "); 
      } 
      
      else if (nbre>nbrealeatoire) 
      { 
      printf("NOMBRE SUPERIEUR AU NOMBRE ALEATOIRE\n\nSAISIE UN NOMBRE INFERIEUR: "); 
      } 
      
      else 
      { 
      printf("FELICITATION VOUS AVEZ TROUVE LE BON NUMERO EN %d COUPS\n\n LE NOMBRE ALEATOIRE EST : %d\n\n",coups,nbrealeatoire); 
      
      } 
      } while (nbre != nbrealeatoire); 
      
      return 0; 
      } 
      
      
      fonction joueurs 2 
      
      #include <stdio.h> 
      #include <stdlib.h> 
      #include <time.h> 
      #include "donnees.h" 
      
      void comparaison(); 
      int joueur2(int niveau) 
      { 
      
      int const min =1; 
      int nbrejoueur=0,nbrealeatoire,max=0; 
      if (nbrejoueur==2 && niveau==1) 
      { 
      max=10; 
      printf("\t\t NIVEAU: FACILE\n\nNOMBRE DE JOUEUR: 2\n"); 
      printf("CHOIX DU NOMBRE PAR LE JEU\n\n"); 
      nbrealeatoire=((rand()%(max-min+1))+min); 
      printf("A VOUS DE JOUER\n"); 
      } 
      else if (nbrejoueur==2 && niveau==2) 
      { 
      max=1000; 
      printf("\t\t NIVEAU: MOYEN\n\nNOMBRE DE JOUEUR: 2\n"); 
      printf("CHOIX DU NOMBRE PAR LE JEU\n\n"); 
      nbrealeatoire=((rand()%(max-min+1))+min); 
      printf("A VOUS DE JOUER\n"); 
      } 
      else if (nbrejoueur==2 && niveau==3) 
      { 
      max=100000; 
      printf("\t\t NIVEAU: DIFFICILE\n\nNOMBRE DE JOUEUR: 2\n"); 
      printf("CHOIX DU NOMBRE PAR LE JEU\n\n"); 
      nbrealeatoire=((rand()%(max-min+1))+min); 
      printf("A VOUS DE JOUER\n"); 
      } 
      comparaison(); 
      return 0; 
      
      } 
      
      fonction joueurs 3 
      
      #include <stdio.h> 
      #include <stdlib.h> 
      #include <time.h> 
      #include "donnees.h" 
      
      void comparaison(); 
      int joueur3(int niveau) 
      { 
      
      int const min =1; 
      int nbrejoueur=0,nbrealeatoire,max=0; 
      if (nbrejoueur==3 && niveau==1) 
      { 
      max=10; 
      printf("\t\t NIVEAU: FACILE\n\nNOMBRE DE JOUEUR: 3\n"); 
      printf("CHOIX DU NOMBRE PAR LE JEU\n\n"); 
      nbrealeatoire= (rand()%(max-min+1))+ min; 
      printf("A VOUS DE JOUER\n"); 
      } 
      else if (nbrejoueur==3 && niveau==2) 
      { 
      max=1000; 
      printf("\t\t NIVEAU: MOYEN\n\nNOMBRE DE JOUEUR: 3\n"); 
      printf("CHOIX DU NOMBRE PAR LE JEU\n\n"); 
      nbrealeatoire= (rand()%(max-min+1))+ min; 
      printf("A VOUS DE JOUER\n"); 
      } 
      else if (nbrejoueur==3 && niveau==3) 
      { 
      max=100000; 
      printf("\t\t NIVEAU: DIFFICILE\n\nNOMBRE DE JOUEUR: 3\n"); 
      printf("CHOIX DU NOMBRE PAR LE JEU\n\n"); 
      nbrealeatoire= (rand()%(max-min+1))+ min; 
      printf("A VOUS DE JOUER\n"); 
      } 
      comparaison(); 
      
      return 0; 
      } 
      
      
      fonction comparaison 
      #include <stdio.h> 
      #include <stdlib.h> 
      #include <time.h> 
      #include "donnees.h" 
      
      void comparaison() 
      { 
      int nbrejoueur=0,nbrealeatoire=0,nbre=0,coups=0; 
      int i=0; 
      
      do 
      { 
      for (i=0;i<nbrejoueur;i++) 
      { 
      printf("JOUEUR %d\n\n choix[%d]= ",(i),(i)); 
      scanf("%d",&nbre); 
      coups++; 
      if (nbre<nbrealeatoire) 
      { 
      printf("NOMBRE INFERIEUR AU NOMBRE ALEATOIRE\n\nSAISIE UN NOMBRE SUPERIEUR: "); 
      } 
      
      else if (nbre>nbrealeatoire) 
      { 
      printf("NOMBRE SUPERIEUR AU NOMBRE ALEATOIRE\n\nSAISIE UN NOMBRE INFERIEUR: "); 
      } 
      
      else 
      { 
      printf("FELICITATION VOUS AVEZ TROUVE LE BON NUMERO EN %d COUPS\n\n LE NOMBRE ALEATOIRE EST : %d\n\n",coups,nbrealeatoire); 
      
      } 
      
      } 
      
      
      } while (nbre != nbrealeatoire); 
      
      } 
      
      headers 
      
      #ifndef DONNEES_H_INCLUDED 
      #define DONNEES_H_INCLUDED 
      
      typedef struct donnees donnees; 
      struct donnees 
      { 
      char pseudo[50]; 
      char sexe[10]; 
      }; 
      
      #endif // DONNEES_H_INCLUDED
      0
      1. Dalfab Messages postés 638 Date d'inscription   Statut Membre Dernière intervention   102 > erzascarlette
         
        Euh, j'avais indiqué par exemple le niveau mais c'est aussi le cas de nbredejoueur, il peut aussi y en avoir d'autres choses.
        0
    2. erzascarlette
       
      merci pour le conseil j'ai changer les types de toutes les fonctions j'ai mis des parametres pour l'appel ca fonctionne
      pouriez vous m'aider encore un peu voici le probleme
      prenons l'exemple de 3 joueurs
      lorsque le joueurs 2 trouve le nombre aleatoire la boucle ne s'arrete pas mais demande au joueurs 3 d'entrer un nbre pour faire la comparaison mais moi j'aimerai qu'il s'arrete des que l'un des jours trouve le nbre aleatoire generer par l'ordinateur

      do
        {
          for (i=0;i<nbrejoueur;i++)
      
          {
                      printf("\nJOUEUR %d\n\n choix[%d]= ",i,i);
                      scanf("%d",&nbre);
                      coups++;
                 if (nbre<nbrealeatoire)
                   {
                      printf("\t\t\t\t\tNOMBRE INFERIEUR AU NOMBRE ALEATOIRE\n\nSAISIE UN NOMBRE SUPERIEUR: ");
                   }
      
                else if (nbre>nbrealeatoire)
                   {
                      printf("\t\t\t\t\tNOMBRE SUPERIEUR AU NOMBRE ALEATOIRE\n\nSAISIE UN NOMBRE INFERIEUR: ");
                   }
      
                 else
                   {
                       printf("\t\t\t\t\tFELICITATION VOUS AVEZ TROUVE LE BON NUMERO EN %d COUPS\n\n LE NOMBRE ALEATOIRE EST : %d\n\n",coups,nbrealeatoire);
      
                    }
      
          }
      
      
        } while (nbre != nbrealeatoire);
      0
    3. erzascarlette
       
      Déjà résolu merci
      0