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

Résolu
kiback Messages postés 259 Date d'inscription   Statut Membre Dernière intervention   -  
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   -
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   Statut Membre Dernière intervention   617
 
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 259 Date d'inscription   Statut Membre Dernière intervention   39
 
Ca change, mais pas en mieux : http://img5.hostingpics.net/pics/633805Capturer.jpg
0
biboo
 
+1 avec scaravenger, inutile d'utiliser un long. :)
0
biboo
 
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   Statut Membre Dernière intervention   617
 
J'avais oublié printf("Votre IMC est de %lf. \n", imc);
en résumé lf partout
0
kiback Messages postés 259 Date d'inscription   Statut Membre Dernière intervention   39
 
----> biboo : j'ai pas trop compris, là...

----> scaravenger : j'ai modifié, et maintenant ça m'affiche 0.001911 ...
0
biboo
 
Affiche dans un printf le résultat de pow(taille, 2);
0
kiback Messages postés 259 Date d'inscription   Statut Membre Dernière intervention   39
 
il affiche 225000.000000
0
scaravenger Messages postés 2685 Date d'inscription   Statut Membre Dernière intervention   617
 
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   Statut Contributeur Dernière intervention   1 846
 
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 259 Date d'inscription   Statut Membre Dernière intervention   39
 
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   Statut Contributeur Dernière intervention   1 846
 
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 259 Date d'inscription   Statut Membre Dernière intervention   39
 
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   Statut Contributeur Dernière intervention   1 846
 
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