Problème langage C

Fermé
Utilisateur anonyme - Modifié par géo trouve-tout le 6/04/2012 à 19:18
UbuntuPR Messages postés 89 Date d'inscription mercredi 22 juin 2011 Statut Membre Dernière intervention 1 août 2013 - 9 avril 2012 à 15:29
Bonjour,

J'ai encore un problème dans un de mes codes que j'ai fait. Pouvez-vous me dire ce qui ne va pas svp ? Merci d'avance
#include <stdio.h>
#include <stdlib.h>
#include <time.h>


int main ( int argc, char** argv )
{
int nombreMystere = 0, nombreEntre = 0, nombre_de_coups = 1, reponse =1, nombre_de_joueurs =0;
const int MAX = 100, MIN = 1;

srand(time(NULL));
nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
printf("Bonjour! Nous allons jouer au jeu de + et du -");
printf("Combien de joueurs vont jouer ? Nombre max autorise : 2\n");
scanf("%d", &nombre_de_joueurs);
if (nombre_de_joueurs== 1)
{

do
{
printf("Tres bien vous avez choisi le mode 1 joueur\n");
printf("Dis moi un nombre\n");
scanf("%d", &nombreEntre);
if (nombreEntre < nombreMystere)
{
printf("C'est plus!\n");
nombre_de_coups ++;
}
else if (nombreEntre > nombreMystere)
{
printf ("C'est moins!\n");
nombre_de_coups ++;
}
else
{
printf("Bravo! T'as trouvé en %d fois, nom d'une Roberta!", nombre_de_coups);
printf("Tu veux recommencer ? Tapes 1 pour oui \n Sinon quittes!");
scanf ("%d", &reponse);
}
} while (nombreEntre != nombreMystere || reponse ==1);

}
else if (nombre_de_joueurs ==2)
do
{

printf("Mode 2 joueurs \n");
printf("Le nombre est compris entre 0 et 100\n");
printf("Joueur 1 à toi! Propose un nombre\n");
scanf("%d", nombreEntre);
if (nombreEntre < nombreMystere)
{
printf("C'est plus\n");
nombre_de_coups++;
}
else if (nombreEntre > nombreMystere)
{
printf("C'est moins.\n");
nombre_de_coups++;
}
else
{
printf("Bravo! Tu as trouvé en %d coups\n", nombre_de_coups);
printf("Joueur maintenant! Pareil! Choisis un nombre!");
scanf("%d", nombreEntre);
}

if (nombreEntre < nombreMystere)
{
printf("C'est plus\n");
nombre_de_coups++;
}
else if (nombreEntre > nombreMystere)
{
printf("C'est moins.\n");
nombre_de_coups++;
}
else
{
printf("Bravo! Tu as trouvé en %d coups\n", nombre_de_coups);
printf("Veux-tu refaire une partie?\n");
printf("Pour oui tapes 1 sinon quittes!\n");
scanf("%d", &reponse);
}
} while (nombreEntre != nombreMystere || reponse ==1);

return 0;
}




Même si ce sont des professionels,Que ce soit à n'importe quel âge, si on est motivé, on peut faire des ravages, et tous les dépasser!
A voir également:

4 réponses

Pacorabanix Messages postés 3248 Date d'inscription jeudi 23 août 2007 Statut Membre Dernière intervention 19 mai 2013 661
6 avril 2012 à 19:40
salut

1) envoie ton code avec les balises "code" du forum, comme ça les espaces de début restent et c'est plus lisible

2) peux-tu nous dire directement quel est le problème ?si erreur de compilation, le message d'erreur par exemple ?
0
déjà aucun message d'erreur ca complie normallement. Des que je choisis 1 joueur ca fonctionne ensuite si je ferme que je redemarre et que je chosis le mode 2 joueurs et ben la ca met Propose un nombre enfin ca va jusqu'à propose un nombre etla il y a le curseur qui clignote pour que j'entre le chiffre puis dès que j'appuie sur entrer j'ai un mesage windows qui dit que le programme a eu un probleme ert doit fermer et ca s'arrete brisquement au deuxieme joueur.
Tiens voilà le script en code :
 
#include <stdio.h> 
#include <stdlib.h> 
#include <time.h> 


int main ( int argc, char** argv ) 
{ 
    int nombreMystere = 0, nombreEntre = 0, nombre_de_coups = 1, reponse =1, nombre_de_joueurs =0; 
    const int MAX = 100, MIN = 1; 

    srand(time(NULL)); 
    nombreMystere = (rand() % (MAX - MIN + 1)) + MIN; 
        printf("Bonjour! Nous allons jouer au jeu de + et du -"); 
        printf("Combien de joueurs vont jouer ? Nombre max autorise : 2\n"); 
        scanf("%d", &nombre_de_joueurs); 
if (nombre_de_joueurs== 1) 
{ 

    do 
    { 
        printf("Tres bien vous avez choisi le mode 1 joueur\n"); 
       printf("Dis moi un nombre\n"); 
        scanf("%d", &nombreEntre); 
        if (nombreEntre < nombreMystere) 
        { 
        printf("C'est plus!\n"); 
        nombre_de_coups ++; 
        } 
        else if (nombreEntre > nombreMystere) 
        { 
        printf ("C'est moins!\n"); 
        nombre_de_coups ++; 
        } 
        else 
        { 
    printf("Bravo! T'as trouvé en %d fois, nom d'une Roberta!", nombre_de_coups); 
    printf("Tu veux recommencer ? Tapes 1 pour oui \n Sinon quittes!"); 
    scanf ("%d", &reponse); 
        } 
} while (nombreEntre != nombreMystere || reponse ==1); 

} 
else if (nombre_de_joueurs ==2) 
    do 
    { 

    printf("Mode 2 joueurs \n"); 
    printf("Le nombre est compris entre 0 et 100\n"); 
    printf("Joueur 1 à toi! Propose un nombre\n"); 
    scanf("%d", nombreEntre); 
    if (nombreEntre < nombreMystere) 
    { 
        printf("C'est plus\n"); 
        nombre_de_coups++; 
    } 
    else if (nombreEntre > nombreMystere) 
    { 
        printf("C'est moins.\n"); 
        nombre_de_coups++; 
    } 
    else 
    { 
        printf("Bravo! Tu as trouvé en %d coups\n", nombre_de_coups); 
        printf("Joueur maintenant! Pareil! Choisis un nombre!"); 
        scanf("%d", nombreEntre); 
    } 

        if (nombreEntre < nombreMystere) 
    { 
        printf("C'est plus\n"); 
        nombre_de_coups++; 
    } 
    else if (nombreEntre > nombreMystere) 
    { 
        printf("C'est moins.\n"); 
        nombre_de_coups++; 
    } 
    else 
    { 
        printf("Bravo! Tu as trouvé en %d coups\n", nombre_de_coups); 
        printf("Veux-tu refaire une partie?\n"); 
        printf("Pour oui tapes 1 sinon quittes!\n"); 
        scanf("%d", &reponse); 
    } 
} while (nombreEntre != nombreMystere || reponse ==1); 

   return 0; 
} 

Même si ce sont des professionels,Que ce soit à n'importe quel âge, si on est motivé, on peut faire des ravages, et tous les dépasser!
0
Pacorabanix Messages postés 3248 Date d'inscription jeudi 23 août 2007 Statut Membre Dernière intervention 19 mai 2013 661
Modifié par Pacorabanix le 6/04/2012 à 20:23
ahhh avec tes précisions j'ai trouvé.
erreur minuscule, mais terrible de conséquences ^^ :

scanf("%d", nombreEntre);

tu as oublié le " & " sur nombreEntre dans la partie pour 2 joueurs.
0
Utilisateur anonyme
6 avril 2012 à 21:10
AH merci je vais tester :)
0
Utilisateur anonyme
6 avril 2012 à 21:52
Alors j'ai testé la le nombre s'enregistre mais ca plante aussitot après
0
Pacorabanix Messages postés 3248 Date d'inscription jeudi 23 août 2007 Statut Membre Dernière intervention 19 mai 2013 661
7 avril 2012 à 18:09
tu as vu qu'il y avait un autre scanf après celui-là où tu as oublié le "&" ?
0
Utilisateur anonyme
7 avril 2012 à 23:21
Ah c'ets bon merci ca marche...Mais le probleme est que malheuresement il ya un probleme : A cause de la boucle la console m'écrit joueur 1 à toi lorsque c'est le deuxieme joueur..Il faut resoudre ca^^
0
Utilisateur anonyme
9 avril 2012 à 00:12
Comment faire,?
0
Pacorabanix Messages postés 3248 Date d'inscription jeudi 23 août 2007 Statut Membre Dernière intervention 19 mai 2013 661
9 avril 2012 à 13:32
je te retourne la question : comment veux-tu que ce jeu se joue à 2 joueurs ?

il y a plusieurs possibilités.
0
UbuntuPR Messages postés 89 Date d'inscription mercredi 22 juin 2011 Statut Membre Dernière intervention 1 août 2013 10
9 avril 2012 à 15:29
Il manque un "&" a un des tes scanf effectivement et si tu veux que ça affiche les bon joueurs initialise une variable numero_joueur par exemple, une autre coup_deux_joueurs qui quand son modulo de deux est nul (
coup_deux_joueurs%2
) c'est au deuxième joueur de joué, et si il est différent de zéro c'est au premier.

ton code devrait ressembler à ça :
on initialise les variables :
int nombreMystere = 0, nombreEntre = 0, nombre_de_coups = 1, reponse =1, nombre_de_joueurs =0,numero_joueurs=1,coups_deux_joueurs=1;


ensuite le code du mode deux joueurs :
else if (nombre_de_joueurs ==2)
do
{

printf("Mode 2 joueurs \n");
printf("Le nombre est compris entre 0 et 100\n");
printf("Joueur %i à toi! Propose un nombre\n",numero_joueurs);
scanf("%d", &nombreEntre);
coups_deux_joueurs++;
if(coups_deux_joueurs%2 ==0)
{
	numero_joueurs = 2;
}
else
{
	numero_joueurs = 1;
}
if (nombreEntre < nombreMystere)
{
printf("C'est plus\n");
nombre_de_coups++;
}
else if (nombreEntre > nombreMystere)
{
printf("C'est moins.\n");
nombre_de_coups++;
}
else
{
printf("Bravo! Tu as trouvé en %d coups\n", nombre_de_coups);
printf("Joueur maintenant! Pareil! Choisis un nombre!");
scanf("%d", nombreEntre);
}
} while (nombreEntre != nombreMystere || reponse ==1);

return 0;


Ensuite tu as trop de chose dans ton
do{}
en effet tu devrais sortir
printf("Mode 2 joueurs \n");
printf("Le nombre est compris entre 0 et 100\n");
pour que ce soit plus agréable à lire.

en espérant t'avoir aidé.
0