Partage
  • Partager sur Facebook
  • Partager sur Twitter

Le résultat de l'exercice du jeu (nombre mystère)

Sujet résolu
8 novembre 2009 à 23:17:35

C'est juste que je comprend pas comment faire : Faites un compteur de "coups". Ce compteur devra être une variable que vous incrémenterez à chaque fois que vous passez dans la boucle. Lorsque l'utilisateur a trouvé le nombre mystère, vous lui direz "Bravo, vous avez trouvé le nombre mystère en 8 coups"

Il n'y a pas de structure :colere2: quand il explique et ça fait que je ne sais pas ou l'écrire! Quelqu'un peu me donner sa version de ça:
-------------

Réalisé par M@teo21, pour les cours du Site du Zér0
siteduzero.com (cours de programmation en C / C++ pour débutants)

*/


#include <stdio.h>
#include <stdlib.h>
#include <time.h>


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

// Génération du nombre aléatoire

srand(time(NULL));
nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;

/* La boucle du programme. Elle se répète tant que l'utilisateur
n'a pas trouvé le nombre mystère */

do
{
// On demande le nombre
printf("Quel est le nombre ? ");
scanf("%d", &nombreEntre);

// On compare le nombre entré avec le nombre mystère

if (nombreMystere > nombreEntre)
printf("C'est plus !\n\n");
else if (nombreMystere < nombreEntre)
printf("C'est moins !\n\n");
else
printf ("Bravo, vous avez trouve le nombre mystere !!!\n\n");
} while (nombreEntre != nombreMystere);

}
Donc ceci mais avec le compteur de coups! :-°

Merci

  • Partager sur Facebook
  • Partager sur Twitter
8 novembre 2009 à 23:25:01

Salut,

Tu trouves qu'il n'y a pas de structure? Il donne carrément la réponse quand on analyse bien et qu'on y réfléchis...

On va décortiquer un peu plus. Si tu veux un compteur, il faut une variable qui stock le résultat. Tu vas donc créer une variable compteur et l'initialiser à 0.
Ensuite, tu sais que chaque fois que le joueur va entrer un nombre, il aura tenté sa chance une fois de plus. Donc, dans la boucle principale de jeu, il faut incrémenter la variable compteur (compteur = compteur +1 ou encore compteur++). Dans la logique humaine, on dira qu'il a joué une fois après qu'il ait entré un nombre. Pourquoi ne pas le placer juste après la récupération du nombre alors?
Finalement, lorsque le joueur a trouvé le nombre, on quitte la boucle principale. Dans ce cas, le jeu est fini et on affiche au joueur le nombre de coups dont il a eu besoin. Il suffit donc d'afficher un texte dans lequel tu affiche la variable compteur.

C'est mieux comme ça? ;)
  • Partager sur Facebook
  • Partager sur Twitter
8 novembre 2009 à 23:46:55

Que veux-tu dire par récupération du nombre...concrètement...car je suis visuel et je ne te suis pas sur ce point là!
  • Partager sur Facebook
  • Partager sur Twitter
8 novembre 2009 à 23:57:20

Je veux dire juste après le scanf("%d", &nombreEntre); Mais c'est une suggestion qui paraît la plus logique pour un humain. Pour l'ordinateur, que tu le mette la ou juste avant, ça revient au même. Tout ce qui compte, c'est que si tu passes dans la boucle, il faut incrémenter le compteur.
Avec tout ça, tu as la réponse à ce que tu cherches. La prochaine étape serait le code qui va avec, ce que je cherche à éviter pour l'instant ;)
  • Partager sur Facebook
  • Partager sur Twitter
9 novembre 2009 à 0:51:04

le problème c'est qu'il me marque : error: 'compteur' not declared in this scope. C'est quoi le problème?
  • Partager sur Facebook
  • Partager sur Twitter
Anonyme
9 novembre 2009 à 1:08:42

salut
le message d'erreur est clair, tu n'as pas déclaré la variable compteur; voici une façon de faire, réfléchis avant de voir la réponse:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>


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

// Génération du nombre aléatoire

    srand(time(NULL));
    nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;

    /* La boucle du programme. Elle se répète tant que l'utilisateur
    n'a pas trouvé le nombre mystère */

    do
    {
        compteur++;
// On demande le nombre
        printf("Quel est le nombre ? ");
        scanf("%d", &nombreEntre);

// On compare le nombre entré avec le nombre mystère

        if (nombreMystere > nombreEntre)
            printf("C'est plus !\n\n");
        else if (nombreMystere < nombreEntre)
            printf("C'est moins !\n\n");
        else
            printf ("Bravo, vous avez trouve le nombre mystere en %d coups!!!\n\n",compteur);
    }
    while (nombreEntre != nombreMystere);
return 0;
}
  • Partager sur Facebook
  • Partager sur Twitter
9 novembre 2009 à 1:13:29

Hahahhaha...quel erreur stupide. Merci. : int nombreMystere = 0, nombreEntre = 0; compteur = 0;
Ça c'était mon erreur...au lieu de la virgule, le point virgule!

Merci encore!
  • Partager sur Facebook
  • Partager sur Twitter
Anonyme
9 novembre 2009 à 1:17:48

de rien, amuse-toi bien
  • Partager sur Facebook
  • Partager sur Twitter
2 octobre 2016 à 12:37:13

Bonjour,

Je rencontre un problème lorsque je veux faire ce compteur. Je débute complètement et je ne vois pas mon erreur.

Le résultat que me donne le rappel du compteur est toujours un chiffre du genre :

"Bravo, vous avez trouve en 6356732 coups  !
Process returned 0 (0x0)   execution time : 10.649 s
Press any key to continue."

Voici mon code :

#include <stdio.h>
#include <stdlib.h>

#include <time.h>

int main()

{const int MAX = 100, MIN = 1, nombre= 0;
int nb_coups = 0;
 srand(time(NULL));
int nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;

while(nombre != nombreMystere)
{
printf("quel est le nombre ?")
scanf("%d", &nombre);
if (nombre < nombreMystere)
{
   printf("C'est plus !\n");
}
else if (nombre > nombreMystere)
{
   printf("C'est moins !\n");
}
nb_coups++;
}

printf("Bravo, vous avez trouve en %d coups  !"), nb_coups;
return 0;
}

  • Partager sur Facebook
  • Partager sur Twitter
2 octobre 2016 à 13:26:20

Hello,

Pour poster du code, clique sur </> et choisis c++ comme langage.

Pour ton erreur: relis bien ton printf() qui affiche le nombre de coups.... et non, il n'y a aucune faute syntaxique à cette ligne (parfois vicieux, le C, n'est-ce pas....)

Edgar;

PS: c'est bien d'avoir fait une recherche sur le forum, mais la prochaine fois, pour poser ta question (après recherche, hein), crée ton topic plutôt que d'aller déterrer un topic de 2009 ;)

EDIT: modifie également les options de compilation pour obtenir un maximum de warnings....

EDIT2: j'ai oublié: indente convenablement ton code stp.

-
Edité par edgarjacobs 2 octobre 2016 à 13:29:55

  • Partager sur Facebook
  • Partager sur Twitter

On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent

26 février 2022 à 10:30:56

Faites un compteur de « coups ». Ce compteur devra être une variable que vous incrémenterez à chaque fois que vous
passez dans la boucle. Lorsque l'utilisateur a trouvé le nombre mystère, vous lui direz « Bravo, vous avez trouvé le
nombre mystère en 8 coups » par exemple.
Lorsque l'utilisateur a trouvé le nombre mystère, le programme s'arrête. Pourquoi ne pas demander s'il veut faire une autre
partie ?
Si vous faites ça, il vous faudra faire une boucle qui englobera la quasi-totalité de votre programme. Cette boucle devra
se répéter TANT QUE l'utilisateur n'a pas demandé à arrêter le programme. Je vous conseille de rajouter une variable
booléenne continuerPartie initialisée à 1 au départ. Si l'utilisateur demande à arrêter le programme, vous mettrez la
variable à 0 et le programme s'arrêtera.
Implémentez un mode 2 joueurs !Attention, je veuxqu'on ait le choixentre un mode 1 joueur et un mode 2 joueurs !
Vous devrez donc faire un menu au début de votre programme qui demande à l'utilisateur le mode de jeu qui l'intéresse.
La seule chose qui changera entre les deuxmodes de jeu, c'est la génération du nombre mystère. Dans un cas ce sera un
rand() comme on a vu, dans l'autre cas ça sera…un scanf.
Créez plusieurs niveaux de difficulté.Au début, faites un menu qui demande le niveau de difficulté. Par exemple :
1 = entre 1 et 100 ;
2 = entre 1 et 1000 ;
3 = entre 1 et 10000.
Si vous faites ça, vous devrez changer votre constante MAX…Eh oui, ça ne peut plus être une constante si la valeur
doit changer au cours du programme ! Renommez donc cette variable en nombreMaximum (vous prendrez soin
d'enlever le mot-clé const sinon ça sera toujours une constante !). La valeur de cette variable dépendra du niveau qu'on
aura choisi.
Voilà, ça devrait vous occuper un petit bout de temps.Amusez-vous bien et n'hésitez pas à chercher d'autres idées pour améliorer
ce « Plus ou Moins », je suis sûr qu'il y en a ! N'oubliez pas que les forums sont à votre disposition si vous avez des questions.
  • Partager sur Facebook
  • Partager sur Twitter
26 février 2022 à 10:54:38

@AbibWabi Bonjour, merci de ne pas déterrer d'ancien sujet résolu. Créer le votre dans le respect des règles du forum à savoir qu'un message commence par des règles de politesses (un bonjour ou des salutations à la communauté et se termine par des remerciements par avance pour les futures réponses) un descriptif de votre problème et le code que vous avez écrit inséré sur le forum avec l'outil d'intégration de code soit le bouton code </>.

Déterrage

Citation des règles générales du forum :

Avant de poster un message, vérifiez la date du sujet dans lequel vous comptiez intervenir.

Si le dernier message sur le sujet date de plus de deux mois, mieux vaut ne pas répondre.
En effet, le déterrage d'un sujet nuit au bon fonctionnement du forum, et l'informatique pouvant grandement changer en quelques mois il n'est donc que rarement pertinent de déterrer un vieux sujet.

Au lieu de déterrer un sujet il est préférable :

  • soit de contacter directement le membre voulu par messagerie privée en cliquant sur son pseudonyme pour accéder à sa page profil, puis sur le lien "Ecrire un message"
  • soit de créer un nouveau sujet décrivant votre propre contexte
  • ne pas répondre à un déterrage et le signaler à la modération

Je ferme ce sujet. En cas de désaccord, me contacter par MP.

  • Partager sur Facebook
  • Partager sur Twitter