Erreur de code en c...
Résolu
Luvial
-
fiddy Messages postés 11069 Date d'inscription Statut Contributeur Dernière intervention -
fiddy Messages postés 11069 Date d'inscription Statut Contributeur Dernière intervention -
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 de déverrouillage oublié - Guide
- Code puk bloqué - Guide
- Code activation windows 10 - Guide
- Code blocks - Télécharger - Langages
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 !