Se connecter avec
S'enregistrer | Connectez-vous

Programme...

Dernière réponse : dans Programmation

Bonjour à tous,
alors je me suis mis ya 1 journée au langage de programmation,
la j'apprend le C, et j'utilise Code::Blocks.

Alors pour m'entrainez et voir si je comprenez bien tout j'ai decidé de
créer un petit programme qui calculerais votre IMC (indice de masse corporelle)
voila, et ensuite en fonction du resultat, je met un systeme de switch pour dire
si par exemple vous etes en dessous de 18.5 : "Attention, vous etes frappe
de Maigreur ..."
voyez

seulement quand je fais compiler et executer, il me met :
"error switch quantity not an integer"
alors je sais pas si ca a avoir avec le fait que le chiffre IMC obtenu n'est pas un entier ?

voici le code :

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

int main()
{
double poids = 0, taille = 0, imc = 0, nombre = 2, taille2 = 0;

printf("Calculer son indice de masse corporelle (IMC) permet de chiffrer un exces de \npoids ou une insuffisance ponderale. L'IMC indique aussi quel poids nous \nconvient pour une sante optimale.\n\n");
printf("Pour cela nous avons besoin : \nde votre poids, en kilogramme \nde votre taille, en metre.\n\n\n");
system("PAUSE");
printf("Entrez votre poids (inscrire un point, non pas une virgule si necessaire) :\n");
scanf("%lf", &poids);

printf("\n\nEntrez votre taille (meme consigne) :\n");
scanf("%lf", &taille);


taille2 = pow(taille, 2);

imc = poids / taille2;

printf("\n\n\nVotre IMC est : %lf\n\n\n", imc);


switch (imc)
{
case <= 18.5:
printf("Vous etes frappe de Maigreur. Votre prochain objectif : vous remplumez !\n");
break;
case > 18.5:
printf("Vous etes Normal, donc pas d'inquiétude, vous etes en forme, continuez ainsi.\n");
break;
case > 24.9:
printf("Vous etes en Surpoids. Votre prochain objectif : perdre les quelques kilos en trop !\n");
break;
case > 29.9:
printf("Vous etes frappe d'Obesite. Il faut surveiller d'avantage votre alimentation et faire du sport !\n");
break;
case > 39.9:
printf("ATTENTION, vous etes frappe d'Obesite massive, aller tout de suite voir un diététicien pour vous aider !!\n");
break;
default:
printf("Je suis desole mais il n'y a aucune information concernant votre IMC.\n");
break;
}

system("PAUSE");
return 0;
}



// MERCIDE M'AIDER \\

Autres pages sur : programme

Lassé par la pub ? Créez un compte

le switch ne peut fonctionner qu'avec un integer.
int i;
switch (i)
Ok.
char i
switch (i)
->Ok
char i[3]
->switch(i)
PAS Ok.

pour ton cas, il te faut passer impérativement par des if .
if(imc <= 18.5)
printf("....");
else
if(imc <= 24.5)
printf("....");
else
[...]

Tenaka a dit :
?


Désolé... je bosse:
Je crois que c'est sur ce forum que j'ai lu ça, et en temps qu'éleveur de puces, ou pisseur de code, ça m'a bien fait marré:
Informaticien/Programmeur n.m : Celui qui résout un problème que vous n'aviez pas, d'une façon que vous ne comprenez pas.


pas trop le temps dans la journée de lire les threads!



Citation :

ah en fait cela ne pet marcher qu'avec des nombres entiers c'est ca ?


OUI
Pour info, un char est en fait un entier, cf la table ASCII des correspondances, d'où mon 1er message.

Citation :

et est-ce que sinon on peut des >= etc. dans un switch comme j l'ai fait ?

NON.
Je t'ai mis un exemple de code qui fonctionnerai


si x<18.5
fait ca
sinon (donc x>=18.5)
si (x<24.9) (donc x >=18.5 ET x<24.9)
fait ca
sinon
si x(<29.9) (donc x >18.5 ET x>24.9 ET x<29.9)
fait ca
sinon
[...]

c'est la base de l'algorithmique, si tu n'arrive pas à comprendre, reprends depuis le début ;) 
Lassé par la pub ? Créez un compte
Tom's guide dans le monde