Probleme boucle débutante :)

Résolu
Charlotte_Rikka Messages postés 3 Date d'inscription jeudi 15 avril 2021 Statut Membre Dernière intervention 15 avril 2021 - 15 avril 2021 à 20:26
cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 - 15 avril 2021 à 21:39
Bonjour à tous :)
Voilà, je débute dans le codage, et j'ai un petit soucis que je ne sais comment regler..
Mon projet est un petit jeu console :

1-L'ordinateur tire au sort un nombre entre 1 et 100.
2- Il vous demande de deviner le nombre. Vous entrez donc un nombre entre 1 et 100.
3- L'ordinateur compare le nombre que vous avez entré avec le nombre « mystère » qu'il a tiré au sort. Il vous dit si le nombre mystère est supérieur ou inférieur à celui que vous avez entré.
4- Puis l'ordinateur vous redemande le nombre.
5-Et il vous indique si le nombre mystère est supérieur ou inférieur.
6-Et ainsi de suite, jusqu'à ce que vous trouviez le nombre mystère.

Alors j'y suis plus ou moins parvenue .. sauf que parfois .... pas tout le temps , lorsque je rentre un chiffre, mon pc indique à la fois que le chiffre es trop grand ET trop petit.

Je vous envoi les images ,merci d'avance pour votre aide ! Charlotte

7 réponses

Dalfab Messages postés 706 Date d'inscription dimanche 7 février 2016 Statut Membre Dernière intervention 2 novembre 2023 11
15 avril 2021 à 21:17
Bonjour,

à chaque fois que tu écris
(rand() % (MAX - MIN + 1)) + MIN
, tu recalcules un nouveau nombre. Tu compares donc si la saisie est inférieure à un nombre aléatoire, supérieure à un autre nombre aléatoire ou bien égale à un troisième nombre aléatoire, et si ça n'est pas égal à un quatrième nombre aléatoire tu recommences.
Il te faut stocker une bonne fois cette expression dans une variable
nombre_a_trouver
, demander un
nombre_saisi 
et toujours comparer ces deux variables.
1
Whismeril Messages postés 19022 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 17 avril 2024 656
15 avril 2021 à 20:29
Bonsoir

pour que l'on puisse essayer de t'aider, il faut poster ton code comme décrit là
https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
0
Charlotte_Rikka Messages postés 3 Date d'inscription jeudi 15 avril 2021 Statut Membre Dernière intervention 15 avril 2021
Modifié le 15 avril 2021 à 21:20
Ok merci !!!
Voici mon code !

Et Trois autres problemes dont je viens de m'aperçevoir :
1- parfois le pc n'affiche pas du tout le fait que le nombre soit trop grand ou trop petit ( voir photo )
2- Lorsque je trouve le nombre exact, l'ordinateur affiche : la solution est un chiffre plus petit ET Bravo vous avez trouvé la bonne réponse
3- Parfois le nombre est ;un coup trop grand,
un coup trop petit ( voir photo )



( voir photo )

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

    int main ( int argc, char** argv )
{
    // ****************DEBUT DU JEU*****************
    printf("Bienvenue dans mon petit jeu\n\n");
// ******************CI DESSOUS TOUTES LES DECLARATIONS VARIABLES   **************
    int nombreMystere = 0;
    const int MAX = 100, MIN = 1;
    srand(time(NULL));
    nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
    // ***************CI DESSOUS LES COMMANDES *****************

    printf("Tu vas devoir trouver le nombre mystere compris entre 1 et 100!\n\n\n\n\nC'est parti!\n\n\n\n");

// ***************************CI DESSOUS LA BOUCLE****************************
    while (nombreMystere = (rand() % (MAX - MIN + 1)) + MIN )
{
    printf("Entrez le nombre mystere\n\n");
    scanf("%d", &nombreMystere);

    if (nombreMystere < (rand() % (MAX - MIN + 1)) + MIN )
{   printf("La solution est un chiffre plus grand!\n\n");
}
    if (nombreMystere > (rand() % (MAX - MIN + 1)) + MIN )
{   printf("La solution est un chiffre plus petit!\n\n");
}
    if ( nombreMystere == (rand() % (MAX - MIN + 1)) + MIN )
{   printf(" WOW ! Tu es trop fort!");

return 0;
}
}
}

0
Charlotte_Rikka Messages postés 3 Date d'inscription jeudi 15 avril 2021 Statut Membre Dernière intervention 15 avril 2021
15 avril 2021 à 21:25
Ha super!!! merci beaucoup !! Je vais essayer ça tout de suite ! merci ! :)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Whismeril Messages postés 19022 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 17 avril 2024 656
15 avril 2021 à 21:29
OK

Dans tes tests, à quoi compares tu le nombre saisi par l'utilisateur?
0
Whismeril Messages postés 19022 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 17 avril 2024 656
15 avril 2021 à 21:30
Ha je n'avais pas vu que Dalfab t'avais donné la solution
0
cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 123
Modifié le 15 avril 2021 à 21:40
Bonjour !

Il y a clairement plusieurs petits soucis dans ton code, qu'on va essayer de décortiquer:
  • Ton nombre mystère est calculé aléatoirement une seule fois au démarrage de ton programme, et stocké dans une variable. Il ne doit plus "bouger" après cela.
  • Il te faut une variable pour stocker ce que l'utilisateur choisi (quand on le demande via scanf). Tu vois bien qu'utiliser "nombreMystère" pour tout est problématique ;). Il te faut une autre variable.
  • Attention = (affectation) et == (comparaison) ce n'est pas la même chose ! Il y a une petite erreur à ce niveau là.
0
Rejoignez-nous