Problème dans ce programme
Résolu/Fermé
A voir également:
- Problème dans ce programme
- Programme demarrage windows 10 - Guide
- Cette action ne peut pas être réalisée car le fichier est ouvert dans un autre programme - Guide
- Désinstaller programme windows 10 - Guide
- Forcer la fermeture d'un programme - Guide
- Programme démarrage windows 10 - Guide
3 réponses
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 844
24 nov. 2012 à 16:26
24 nov. 2012 à 16:26
Bonjour,
printf("Votre IMC est de %lf. V...)
Ce n'est pas de %lf qu'il faut mettre dans tes printf, mais des %f.
else if (resultat2 <= 18,5 || resultat2 > 16,5)
Si le compilateur teste la condition du if c'est que resultat2 > 16.5 (condition contraire à ton if initial). Donc ton programme rentrera systématiquement dans cette partie.
Tu t'es mélangé les pinceaux entre OU et ET (&&). Change, ça devait être mieux. De plus, tu peux simplifier en : else if (resultat2 <= 18,5) tout simplement. Je te laisse corriger le reste.
Et enfin tu as oublié le return 0; final.
printf("Votre IMC est de %lf. V...)
Ce n'est pas de %lf qu'il faut mettre dans tes printf, mais des %f.
else if (resultat2 <= 18,5 || resultat2 > 16,5)
Si le compilateur teste la condition du if c'est que resultat2 > 16.5 (condition contraire à ton if initial). Donc ton programme rentrera systématiquement dans cette partie.
Tu t'es mélangé les pinceaux entre OU et ET (&&). Change, ça devait être mieux. De plus, tu peux simplifier en : else if (resultat2 <= 18,5) tout simplement. Je te laisse corriger le reste.
Et enfin tu as oublié le return 0; final.
p3t3r42
Messages postés
74
Date d'inscription
mardi 18 janvier 2011
Statut
Membre
Dernière intervention
2 février 2014
28
Modifié par p3t3r42 le 24/11/2012 à 16:34
Modifié par p3t3r42 le 24/11/2012 à 16:34
Bonjour,
Je pense que l'erreur viens des conditions ou plus précisément du OU
Si j'ai bien compris, le message dépend de l'intervalle auquel appartient l'IMC calculé, donc on doit avoir :
IMC appartient à un intervalle [min; max], ce qui revient à dire : min <= IMC ET IMC <= max
Cela donne dans le code:
Je permet de faire une autre remarque, il est possible ici de faire:
En effet, si l'IMC est inférieur à 16.5 il affiche le premier message, sinon il teste la condition du else if suivante et ainsi de suite, ce qui revient au même...
Je pense que l'erreur viens des conditions ou plus précisément du OU
||
Si j'ai bien compris, le message dépend de l'intervalle auquel appartient l'IMC calculé, donc on doit avoir :
IMC appartient à un intervalle [min; max], ce qui revient à dire : min <= IMC ET IMC <= max
Cela donne dans le code:
if (resultat2 <= 16,5)
{
printf("Votre IMC est de %lf. Vous etes en famine. Il va quand meme falloir penser a se nourrir !", resultat2);
}
else if (resultat2 <= 18,5 && resultat2 > 16,5)
{
printf("Votre IMC est de %lf. Vous etes maigre. C'est triste.", resultat2);
}
// etc...
Je permet de faire une autre remarque, il est possible ici de faire:
if (resultat2 <= 16,5) { printf("Votre IMC est de %lf. Vous etes en famine. Il va quand meme falloir penser a se nourrir !", resultat2); } else if (resultat2 <= 18,5) { printf("Votre IMC est de %lf. Vous etes maigre. C'est triste.", resultat2); } else if (resultat2 <= 25) { printf("Votre IMC est de %lf. Vous etes normal. Restez comme ça, c'est parfait !", resultat2); } // etc...
En effet, si l'IMC est inférieur à 16.5 il affiche le premier message, sinon il teste la condition du else if suivante et ainsi de suite, ce qui revient au même...
24 nov. 2012 à 17:33
Ce n'est pas 18,5 qu'il faut mettre mais 18.5. De même pour tous les doubles de ton programme.