Probleme d'appel de fonction

Résolu/Fermé
erzascarlette - 10 juin 2016 à 15:39
 erzascarlette - 12 juin 2016 à 08:44
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

Dalfab Messages postés 706 Date d'inscription dimanche 7 février 2016 Statut Membre Dernière intervention 2 novembre 2023 101
11 juin 2016 à 13:03
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
erzascarlette
11 juin 2016 à 15:57
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
Dalfab Messages postés 706 Date d'inscription dimanche 7 février 2016 Statut Membre Dernière intervention 2 novembre 2023 101 > erzascarlette
11 juin 2016 à 19:02
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
erzascarlette
11 juin 2016 à 21:07
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
erzascarlette
12 juin 2016 à 08:44
Déjà résolu merci
0