Erreur de code en c...
Résolu
Luvial
-
fiddy Messages postés 11653 Statut Contributeur -
fiddy Messages postés 11653 Statut Contributeur -
Bonsoirs,
Je voudrais savoir pourquoi mon programme, quand il trouve le nombre mystère n'affiche pas "Bravo..." puis demande d'appuyer sur une touche pour quitter ?
Merci d'avance.
Je voudrais savoir pourquoi mon programme, quand il trouve le nombre mystère n'affiche pas "Bravo..." puis demande d'appuyer sur une touche pour quitter ?
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
int Quiter=0;
int MAX=100;
int MIN=1;
srand(time(NULL));
int nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
int nombrechoisis=0;
printf("Ecris un nombre et cherche le nombre mystere! :p \n");
scanf("%d",&nombrechoisis);
while (Quiter==0)
{
if (nombreMystere!=nombrechoisis)
{
if (nombreMystere>=nombrechoisis)
{
printf("Faux! Il est plus grand !\n");
printf("Allez, ecris un nombre et cherche le nombre mystere! :p \n");
scanf("%d",&nombrechoisis);
}
else if (nombreMystere<=nombrechoisis)
{
printf("Faux! Il est plus petit !\n");
printf("Allez, ecris un nombre et cherche le nombre mystere! :p \n");
scanf("%d",&nombrechoisis);
}
else
{
printf("Bravo,tu as trouve ! Le nombre était bien %d !\n",nombreMystere);
Quiter=1;
}
}
}
return 0;
}
Merci d'avance.
A voir également:
- Erreur de code en c...
- Code ascii - Guide
- Code puk bloqué - Guide
- Code de déverrouillage oublié - Guide
- Code activation windows 10 - Guide
- Scanner qr code pc - Guide
3 réponses
Bonjour,
Tu peux simplifier grandement tes boucles if.
De plus tu peux mettre en commun le scanf("%d"...) pour ne le mettre qu'une fois.
Par ailleurs, en fait ton programme affiche bien bravo, mais la fenêtre se ferme aussitôt puisqu'elle rencontre le "return 0" final. Deux solutions : soit tu lances ton programme en console, tu mets system("Pause"); avant le return 0.
Cdlt,
Tu peux simplifier grandement tes boucles if.
Si (a>b) Alors Afficher "Supérieur" Sinon Si (a<b) Alors Afficher "Inférieur" Sinon Afficher "Bravo" Fin Si
De plus tu peux mettre en commun le scanf("%d"...) pour ne le mettre qu'une fois.
Par ailleurs, en fait ton programme affiche bien bravo, mais la fenêtre se ferme aussitôt puisqu'elle rencontre le "return 0" final. Deux solutions : soit tu lances ton programme en console, tu mets system("Pause"); avant le return 0.
Cdlt,
c'est une erreur d'imbrication de if... else incorrecte.
Ceci serait aisément remarquable, si tu indentais correctement ton code :
compare :
avec :
Dans le premier cas, DERNIERE INSTRUCTION; est exécutée si blabla est vrai mais que ni truc ni autre truc n'est vrai.
Dans le deuxième DERNIERE INSTRUCTION; est exécutée si blabla n'est pas vrai.
On voit clairement à quel if... correspond quelle isntruction.
A méditer !
Ceci serait aisément remarquable, si tu indentais correctement ton code :
compare :
int main () {
if (blabla)
{
instruction;
if (truc)
{
instructions;
instructions;
}
else if(autre truc)
{
autre instruction;
}
else
{
DERNIERE INSTRUCTION;
}
}
}
avec :
int main () {
if (blabla)
{
instruction;
if (truc)
{
instructions;
instructions;
}
else if(autre truc)
{
autre instruction;
}
}
else
{
DERNIERE INSTRUCTION;
}
}
Dans le premier cas, DERNIERE INSTRUCTION; est exécutée si blabla est vrai mais que ni truc ni autre truc n'est vrai.
Dans le deuxième DERNIERE INSTRUCTION; est exécutée si blabla n'est pas vrai.
On voit clairement à quel if... correspond quelle isntruction.
A méditer !