C : calcul de l'IMC en console : au secours !

Résolu/Fermé
kiback Messages postés 256 Date d'inscription jeudi 1 novembre 2007 Statut Membre Dernière intervention 30 mai 2010 - 6 mai 2009 à 15:44
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 7 mai 2009 à 22:42
Bonjour, je suis toutoutout nouveau en programmation, et j'ai voulu créer un petit programme qui permet de calculer l'imc à partir du poids et de la taille... seulement, la variable "imc" me renvoie toujours 0...

Quelqu'un peut-il m'aider ?

PS : oui, je sais, c'est pas bien organisé, mais comme je l'ai dit, je suis tout débutant !!

COPIER-COLLER DU CODE :

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

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

long imc=0, poids=0, taille=0;

printf("***************************** CALCULEZ VOTRE IMC *****************************\n\n");

printf("Entrez votre taille (en cm) : \n\n");

scanf("%ld", &taille);
printf("\n");

printf("Entrez votre poids : \n\n");

scanf("%ld", &poids);
printf("\n");


imc=poids/pow(taille, 2);

printf("Votre IMC est de %ld. \n", imc);

if (imc <16.5)
printf("Denutrition : Attention, vous etes en danger ! Consultez un specialiste aussi tot que possible !");

else if (imc <=18.5)
printf("Maigreur : Vous feriez bien de reprendre quelques kilos...");

else if (imc <=25)
printf("Corpulence normale : Tout va bien, votre poids est parfait !");

else if (imc <=30)
printf("Surpoids : Un regime s'impose...");

else if (imc <=35)
printf("Obesite moderee : Attention ! Le poids, c'est la sante et vous etes obese... Une consultaion chez un medecin est recommendee !");

else if (imc <=40)
printf("Obesite severe : Vous etes tres serieusement en surpoids, un consultation s'impose...");

else if (imc >=41)
printf("Obesite morbide ou massive : Attention, vous etes largement au-dele du poids normal, l'echelon le plus eleve de l'IMC, CONSULTEZ UN SPECIALISTE DANS LES PLUS BREFS DELAIS !!!!");

else if (imc == 0)
printf("Je suis desole, le programme doit bugger ! Envoyez-moi un message a baptiste.candellier@laposte.net");
system("PAUSE");
return 0;
}


11 réponses

scaravenger Messages postés 2685 Date d'inscription mercredi 28 mai 2008 Statut Membre Dernière intervention 30 janvier 2015 616
6 mai 2009 à 16:11
Essaye:

double imc=0, poids=0, taille=0;
scanf("%lf", &taille);
scanf("%lf", &poids);
printf("Votre IMC est de %lf. \n", imc);
0
kiback Messages postés 256 Date d'inscription jeudi 1 novembre 2007 Statut Membre Dernière intervention 30 mai 2010 39
6 mai 2009 à 16:14
Ca change, mais pas en mieux : http://img5.hostingpics.net/pics/633805Capturer.jpg
0
+1 avec scaravenger, inutile d'utiliser un long. :)
0
T'es sur que c'est bon d'utiliser %ld pour ton calcul?
Affiche le résultat de pow( ) séparemment.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
scaravenger Messages postés 2685 Date d'inscription mercredi 28 mai 2008 Statut Membre Dernière intervention 30 janvier 2015 616
6 mai 2009 à 16:17
J'avais oublié printf("Votre IMC est de %lf. \n", imc);
en résumé lf partout
0
kiback Messages postés 256 Date d'inscription jeudi 1 novembre 2007 Statut Membre Dernière intervention 30 mai 2010 39
6 mai 2009 à 16:20
----> biboo : j'ai pas trop compris, là...

----> scaravenger : j'ai modifié, et maintenant ça m'affiche 0.001911 ...
0
Affiche dans un printf le résultat de pow(taille, 2);
0
kiback Messages postés 256 Date d'inscription jeudi 1 novembre 2007 Statut Membre Dernière intervention 30 mai 2010 39
6 mai 2009 à 16:32
il affiche 225000.000000
0
scaravenger Messages postés 2685 Date d'inscription mercredi 28 mai 2008 Statut Membre Dernière intervention 30 janvier 2015 616
6 mai 2009 à 17:52
J'ai refait ton boulot à ta place:

double imc=0, poids=0, taille=0;

printf("***************************** CALCULEZ VOTRE IMC *****************************\n\n");

printf("Entrez votre taille (en cm) : \n\n");

scanf("%lf", &taille);
printf("\n");

printf("Entrez votre poids : \n\n");

scanf("%lf", &poids);
printf("\n");


imc=poids/pow(taille/100, 2);
ou
imc=poids/(taille*taille/10000);

printf("Votre IMC est de %lf. \n", imc);

taille en cm si exprimée en m par la suite dans les calculs.
Apprends à lire ta doc.
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
6 mai 2009 à 20:47
Salut
scanf("%lf", &poids);
Non. Pour un double dans le scanf, il faut utiliser %f.
Ce qui donne : scanf("%f", &poids);
Cdlt
0
kiback Messages postés 256 Date d'inscription jeudi 1 novembre 2007 Statut Membre Dernière intervention 30 mai 2010 39
7 mai 2009 à 15:49
merci scaravenger, ça marche !

par contre fiddy, ton astuce ne marche pas et me met des caractères bizarres en résultat...

Pour ceux qui liraient ce post et qui n'auraient pas compris, il fallait juste entrer la taille en mètres !..
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
7 mai 2009 à 20:37
ton astuce ne marche pas
Ce n'est pas une astuce. C'est le C ^^. Je faisais la remarque par rapport au code de scaravenger qui est bon à part la petite remarque que j'ai faite.
Lorsque ta variable est double : scanf("%f",&variable);
0
kiback Messages postés 256 Date d'inscription jeudi 1 novembre 2007 Statut Membre Dernière intervention 30 mai 2010 39
7 mai 2009 à 21:08
Oui, bah avec moi ça ne marche pas... mais avec la solution de scaravenger le problème est résolu !!
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
7 mai 2009 à 22:42
Eh bien, soit t'as mal testé ce que j'ai dit, soit t'as un compilateur qui ne respecte pas la norme.
Voilà, le programme avec un un scanf sur un double.
#include <stdio.h>
int main(void) {
  double t;
  printf("t=");
  scanf("%f",&t);
  printf("t=%lf",t);
  return 0;
}


Enfin bref, si ton cas est résolu, c'est le principal.
0