CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[Aide] Plus ou Moins ?

[RaphnOo]
[RaphnOo]
Niveau 10
15 août 2008 à 19:38:25

Bonjour/Bonsoir.

Je suis un débutant en C et j'essaie d'apprendre grâce au cours d'un site.
J'aimerai qu'il y aie que 10 essais maximum à l'utilisateur du programme et qu'après avoir trouvé le chiffre mystère, il y aie écrit le nombre d'essais qu'on a fait pour trouver le nombre, merci.
Si possible, j'aimerai que l'on me dise l'erreur que j'ai faite et qu'on me dise comment corriger, je vous remercie.

  1. include <stdio.h>
  2. include <stdlib.h>
  3. include <time.h>

int main(int argc, char *argv[])
{

long nombreMystere = 0, nombreEntre = 0;
long nombreEssais = 0;
const long MAX = 100, MIN = 1;

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

while (compteur < 10)
{
compteur++;
}

printf("|||||||||| Plus ou Moins ||||||||||\n\n");
printf("Le nombre mystere est entre 0 et 100.\n");
printf("Vous avez 10 essai. \n\n");

do
{
printf("Quel est le nombre mystere ? ");
scanf("%ld", &nombreEntre);

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

system("PAUSE");
}

caelacanthe
caelacanthe
Niveau 10
15 août 2008 à 20:01:57

y a pas d'erreur, juste l'oubli d'une condition dans le do {}while :hap:

rajoute un nombreEssais=nombreEssais+1 dans le do{}while, remplace le while (nombreEntre != nombreMystere); par while (nombreEntre != nombreMystere || nombreEssais<=10);

et a la fin, il faut mettre le printf de félicitations dans une condition! si nombreEntre==nombreMystère, tu affiche ce print, sinon, c'est qu'on a dépassé les dix essais et il faut afficher une autre phrase qui le fait savoir :ok:

[RaphnOo]
[RaphnOo]
Niveau 10
16 août 2008 à 08:19:50

Merci beaucoup mais je ne vos vraiment pas où il faut y placer. ^^
J'ai bien cherché et essayé et je suis arrive à ça.
Sachant que ça ne marche pas. :-(

  1. include <stdio.h>
  2. include <stdlib.h>
  3. include <time.h>

int main(int argc, char *argv[])
{

long nombreMystere = 0, nombreEntre = 0;
long nombreEssais = 0;
const long MAX = 100, MIN = 1;

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

printf("|||||||||| Plus ou Moins ||||||||||\n\n");
printf("Le nombre mystere est entre 0 et 100.\n");
printf("Vous avez 10 essai. \n\n");

printf("Quel est le nombre mystere ? ");
scanf("%ld", &nombreEntre);

do
{
nombreEssais = nombreEssais+1

if (nombreMystere > nombreEntre)
printf("C'est plus !\n\n");
else if (nombreMystere < nombreEntre)
printf("C'est moins !\n\n");
else if ( nombreMystere == nombreEntre )
printf("Bravo, vous avez trouve le nombre en %ld essais.\n\n" , nombreEssais );
}
while (nombreEntre != nombreMystere || nombreEssais <= 10);

system("PAUSE");
}

caelacanthe
caelacanthe
Niveau 10
16 août 2008 à 14:48:20

ces deux lignes, là:

printf("Quel est le nombre mystere ? ");
scanf("%ld", &nombreEntre);

mets-les juste après le do{, ca devrait marcher :ok:

Paulop
Paulop
Niveau 12
16 août 2008 à 14:50:56

Voila un code corrigé avec commentaires :

  1. include <stdio.h>
  2. include <stdlib.h>
  3. include <time.h>

int main(int argc, char *argv[])
{

long nombreMystere = 0, nombreEntre = 0;
long nombreEssais = 0;
short continuer = 1;
const long MAX = 100, MIN = 1;

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

printf("|||||||||| Plus ou Moins ||||||||||\n\n");
printf("Le nombre mystere est entre 0 et 100.\n");
printf("Vous avez 10 essai. \n\n");

//On utilise un do-while car le joueur doit au moins jouer un coup avant de trouver / se tromper
do
{
//On demande d'entrer le nombre à chaque fois !!
printf("Quel est le nombre mystere ? ");
scanf("%ld", &nombreEntre);

if (nombreMystere > nombreEntre)
printf("C'est plus !\n\n");
else if (nombreMystere < nombreEntre)
printf("C'est moins !\n\n");
else if ( nombreMystere == nombreEntre )
{
printf("Bravo, vous avez trouve le nombre en %ld essais.\n\n" , nombreEssais );
continuer = 0;
}

//On incrémente nombreEssais de 1, peut s'écrire aussi nombreEssais++
nombreEssais = nombreEssais+1;

//Si on dépasse les 5 essais on sort de la boucle
if (nombreEssais == 10)
continuer = 0;
}
//Tant que continuer est à 1, on boucle
while (continuer == 1);
}

Tu avais plusieurs erreurs :
Déjà tu as oublié un point virgule a ton incrémentation, ensuite tu ne demandes pas le nombre mystère dans la boucle, il le demande donc une fois, si c'est pas le bon, ça va boucler 10 fois en repettant que c'est pas le bon.
Enfin j'ai utilisé un test plus simple avec une seule variable et plusieurs test dans la boucle.

[RaphnOo]
[RaphnOo]
Niveau 10
16 août 2008 à 16:50:58

Merci beaucoup de votre aide, ça fait plaisir de voir qu'on peut se faire aider ici. :)

[RaphnOo]
[RaphnOo]
Niveau 10
16 août 2008 à 17:04:12

Excusez-moi du double post, le CS marche parfaitement, mais une fois que les 10 essais sont passés, si je désire mettre un message pour indiquer à l'utilisateur qu'il a perdu.
Comme :
printf("Dommage, vous n'avez pas trouve le nombre mystere.\n\n");

Car je l'ai mis après continuer = 0;
Une fois qu'on a perdu, ça nous redemande le chiffre, donc comment faire pou que le message à l'écran s'affiche et le programme s'arrête, merci. :(

caelacanthe
caelacanthe
Niveau 10
16 août 2008 à 17:57:57

chaud, je me suis trompé dans la condition du do while, j'ai mis (nombreEntre != nombreMystere || nombreEssais <= 10); alors qu'il fallait mettre (nombreEntre != nombreMystere && nombreEssais <= 10);

logique, il faut que le nombre entré soit différent du nombre mystère, ET que nombreessais soit inférieur a dix :noel:

[RaphnOo]
[RaphnOo]
Niveau 10
17 août 2008 à 09:51:08

Merci beaucoup de toute votre aide.

Derrnière chose, quand je trouve en 5 essais, ça marque 6, en 3 essai ça marque 4 etc... :(

Paulop
Paulop
Niveau 12
17 août 2008 à 14:37:19

Deux solutions, tu utilise un <= au lieu d'un <. (script de caelacanthe)

Ou alors tu fais ton incrémentation avant de vérifier la condition (mon script)

En tout cas c'est bien que tu demandes,car après tu ne feras plus ce genre d'erreurs ^^

caelacanthe
caelacanthe
Niveau 10
17 août 2008 à 14:37:42

ca me fait toujours des trucs comme ca, quand je programme :hum:

personnellement, je mets des correctifs, genre nombreessais-1 quand il faut citer le nombre d'essais :noel:

mais vérifie que ca n'influe pas le gameplay, qu'on ne perd pas après neufs essais par exemple :(

caelacanthe
caelacanthe
Niveau 10
17 août 2008 à 14:45:30

mais au fond, tout dépend de ta définition d'un essai :(

un essai, c'est entrer un nombre, ou c'est rater la bonne réponse :question:

dans le premier cas, il faut compter un essai a chaque fois que tu entres un nombre, dans le deuxième, il ne faut le faire que lorsque nombreentre!=nombremystère :ok:

Patatepoil
Patatepoil
Niveau 6
17 août 2008 à 20:45:33

Tiens je reconnais ette exemple. Je l'apprend sur le meme site également , j'en suis rendu au SDL :). Bon site , mais un peu léger quand même.

Paulop
Paulop
Niveau 12
17 août 2008 à 20:57:29

C'est une bonne ressource pour le C, un peu trop légère pour le C++, mais ça va...

[RaphnOo]
[RaphnOo]
Niveau 10
18 août 2008 à 08:37:22

Merci de votre avis, le TP je l'ai terminé, j'essaie de l'améliorer, j'ai réussi mais on m'a pas mal aidé. :)

godrik
godrik
Niveau 30
18 août 2008 à 09:56:33

Ce qui est important dans un TP, ce n'est pas qu'il soit réussi ou non, mais que tu saches le refaire et que tu ais appris des choses.

Sous forums
  • Aide à l'achat Mac
  • Création de Jeux
  • Linux
  • Création de sites web
  • Programmation
  • Internet
  • Steam Deck
  • Macintosh
  • Hardware