Programme en c:quelle est la faute?
Résolu
informatiquetech
Messages postés
225
Date d'inscription
Statut
Membre
Dernière intervention
-
Nero15 Messages postés 2657 Date d'inscription Statut Membre Dernière intervention -
Nero15 Messages postés 2657 Date d'inscription Statut Membre Dernière intervention -
bonjour, pouvez-vous me dire pourquoi mon programme ne marche pas comme je veux.
le voici:
quand je l'exécute si j'ai faux deux fois environ le programme ferme et parfois il me dit que j'ai juste alors que c'est faux.Merci en tout cas.
EDIT: Ajout de la coloration syntaxique.
le voici:
#include <stdio.h> #include <stdlib.h> int main() { int nombresaisi=0; int nombre=0; printf("saisissez un nombre: "); scanf("%d \n", &nombre); printf("quel est le nombre?"); scanf("%d \n", &nombresaisi); while (nombresaisi > nombre) { printf("ton nombre est plus grand \n"); printf("quel est le nombre?"); scanf("%d \n", &nombresaisi); } while (nombresaisi < nombre) { printf("ton nombre est plus petit \n"); printf("quel est le nombre?"); scanf("%d \n", &nombresaisi); } while (nombresaisi == nombre) { printf("bravo tu l'as trouve"); } }
quand je l'exécute si j'ai faux deux fois environ le programme ferme et parfois il me dit que j'ai juste alors que c'est faux.Merci en tout cas.
EDIT: Ajout de la coloration syntaxique.
A voir également:
- Programme en c:quelle est la faute?
- Programme demarrage windows - Guide
- Mettre en veille un programme - Guide
- Message programmé iphone - Guide
- Programme word gratuit - Guide
- Cette action ne peut pas être réalisée car le fichier est ouvert dans un autre programme - Guide
2 réponses
Bonjour,
Ça ne marche pas car dés que les conditions de tes boucles ne sont pas vérifiés tu sors de la boucle en question sans y revenir pour passer au reste du code, une fois sorti des trois boucles le programme termine, ce qui explique ton résultat.
pour une solution propre, prend exemple des codes donnés plus haut ;)
cordialement.
Ça ne marche pas car dés que les conditions de tes boucles ne sont pas vérifiés tu sors de la boucle en question sans y revenir pour passer au reste du code, une fois sorti des trois boucles le programme termine, ce qui explique ton résultat.
pour une solution propre, prend exemple des codes donnés plus haut ;)
cordialement.
C'est comme ceci:#include <stdio.h>
#include <stdlib.h>
void main()
{
double nombresaisi=0, nombre=0;
printf("saisissez un nombre: ");
scanf("%f", &nombre);
printf("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n");
printf("quel est le nombre? ");
scanf("%f", &nombresaisi);
printf("\n");
while (nombresaisi!=nombre)
{
if (nombresaisi>nombre)
{
printf("ton nombre est plus grand.");
printf("\n");
printf("quel est le nombre? ");
scanf("%f", &nombresaisi);
printf("\n");
}
else if (nombresaisi<nombre)
{
printf("ton nombre est plus petit.");
printf("\n");
printf("quel est le nombre? ");
scanf("%f", &nombresaisi);
printf("\n");
}
}
if (nombresaisi==nombre)
{
printf("bravo tu l'as trouve ");
}
printf("tu as gagne");
return 0;
}
Pourquoi avoir remplacé int main() en void main() ?
Du coup, tu as rajouté plein de fautes dans ce programme...
scanf("%f", &nombre);
Il faut mettre %lf (L minuscule).
Pareil pour tous les scanf().
while (nombresaisi!=nombre)
Pas terrible la comparaison entre deux doubles. Il faut plutôt vérifier que la différence entre les deux n'est pas suffisamment petite.
printf("tu as gagne");
Il faut le mettre juste en dessous de : printf("bravo tu l'as trouve").
Il faut utiliser un compteur aussi. Car là en état, le joueur ne peut pas perdre.
N'oublie pas de mettre un printf("\n"); juste au dessus du return 0; pour vider le buffer écran.
Note : n'oublie pas d'utiliser la balise <code c> pour poster ton code la prochaine fois. Exemple :
<code c>ici tu mets ton code</code>
Cdlt,