Jeu de la devinette

Résolu/Fermé
xGiAx - Modifié le 28 oct. 2021 à 14:14
 xGiAx - 28 oct. 2021 à 15:43
Bonjour, je doit créer un programme (si c'est bien le bon terme) mais j'avoue avoir quelques difficultés ... Je vous met les consignes :

Créer un algorithme qui génère un nombre aléatoire entre 0 et 20 inclus (via la fonction rand de math.h).
On doit pouvoir saisir un nombre, et le programme doit nous dire si le nombre saisie est plus petit ou plus grand que le nombre aléatoire.
Nous aurons alors que 4 chances pour trouver le nombre aléatoire.
Le programme doit s'arrêter dés que le bon nombre est saisie.
Utilisez une boucle for et l'instruction break pour sortir de la boucle.

On peut aller plus loin en :
Affichant un message lorsque l'on a perdu.
Affichant le nombre d'essai restant quand on demande le nombre.
Affichant en combien d'essai nous avons réussi.
Vérifiant que le nombre saisie est cohérent (entre 0 et 20)
Vérifiant que ce qui est saisie est bien un nombre avec isNaN
Demandant à l'utilisateur au début, le nombre max et le nombre d'essai qu'il veut.
Proposant une nouvelle partie en fin de jeux.

Et pour l'instant, j'ai créé ceci :
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

// trouver un nombre aléatoire :
int main(){
    int nbr = 0;
    const int MAX = 20, MIN = 0;
    srand(time(NULL));
    nbr = (rand() % (MAX - MIN + 1)) + MIN;

    // demander à l'utilisateur d'insérer un nombre :
    int nbr_choisi;
    printf("Entrez un nombre entre 0 et 20 : ");
    scanf("%i",&nbr_choisi);

    printf("\nLe nombre choisi est : ");

    // conditions :
    int i =nbr;
    while(i < 20){
 printf("\nVoici le nombre : %i", i);

 i++;
    }
    if(nbr_choisi <nbr){
        printf("C'est plus !\n");
    }
    else if(nbr_choisi >nbr){
        printf("C'est moins !\n");
    }
    else(nbr_choisi == nbr){
        printf("C'est exact !");
    }

}

Je vous explique ce qui ne va pas ... Tout d'abord je ne donne que 4 chances pour trouver le bon nombre, mais je ne sais ni où, ni comment mettre le "répéter 4 fois" et je ne sais pas si mon programme est tout à fait correct. En ce qui concerne la deuxième partie de la consigne(le "On peut aller plus loin en"), je n'ai pas forcément besoin d'aide, je la ferai un peu plus tard je vous la met simplement pour que vous ayez un meilleur contexte :)

Merci d'avance de votre aide ! ;)

EDIT : Ajout des balises de code. https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code

A voir également:

1 réponse

jordane45 Messages postés 38241 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 septembre 2024 4 689
28 oct. 2021 à 14:17
Bonjour,

    int i =nbr;
    while(i < 20){
 printf("\nVoici le nombre : %i", i);

 i++;
    }

ça sert à quoi ??



Tout d'abord je ne donne que 4 chances pour trouver le bon nombre, mais je ne sais ni où, ni comment mettre le "répéter 4 fois"

La réponse est dans la question de l'exercice....
Utilisez une boucle for et l'instruction break pour sortir de la boucle.

et en gros.. tu mets, dans cette boucle, le code qui commence à la ligne 14 et fini à la fin du if ...
Sans oublier de mettre le break dans le else, juste après la ligne
printf("C'est exact !");

0
c'est la boucle while, mais je débute en langage C donc je ne sais pas si c'est la meilleure à utiliser. Merci je vais essayer ça !

Ok, j'ai pas lu la consigne jusqu'au bout autant pour moi.
0
Cette fois-ci j'ai fais ça mais je n'arrive toujours pas à limiter le nombre de chances maximales...
J'aimerai introduire : "si au bout de 4 essais l'utilisateur n'a pas trouvé la réponse : vous avez perdu"

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

// trouver un nombre aléatoire :
int main(){
int nbr = 0;
const int MAX = 20, MIN = 0;
srand(time(NULL));
nbr = (rand() % (MAX - MIN + 1)) + MIN;

// demander à l'utilisateur d'insérer un nombre :
for(int nbr=0;nbr<20; nbr++){
printf("\nVoici le nombre : " + nbr);
int nbr_choisi;
printf("Entrez un nombre entre 0 et 20 : ");
scanf("%i",&nbr_choisi);

// conditions :
if(nbr_choisi <nbr){
printf("C'est plus !\n");
}
else if(nbr_choisi >nbr){
printf("C'est moins !\n");
}
else if(nbr_choisi == nbr){
printf("C'est exact !");
break;
}
}
}
0
jordane45 Messages postés 38241 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 septembre 2024 4 689 > xGiAx
28 oct. 2021 à 14:53
Déjà.. quand tu postes du code sur le forum.. tu dois utiliser les BALISES DE CODE.
explications (à lire ENTIEREMENT ! ) disponibles ici https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code

Ensuite...
La question est :

Nous aurons alors que 4 chances pour trouver le nombre aléatoire.
Le programme doit s'arrêter dés que le bon nombre est saisie.
Utilisez une boucle for et l'instruction break pour sortir de la boucle.

Ta boucle FOR .. elle sert donc à limiter à 4 tentatives .... et pas à boucler sur la variable nbr ( que tu as déjà initialisé avec un random.. )

bref..
for(int i=0;i<4; i++){
0
xGiAx > jordane45 Messages postés 38241 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 septembre 2024
28 oct. 2021 à 15:43
Super merci beaucoup, ça marche !
0