Forum

Catégorie : Programmes
Forum : Aide à la programmation
Vues : 936
Réponses : 17
Type : discussion
Etat : réponses autorisées

IMC problème..

None le 10/10/2012 à 20:10
Bonsoir !
Alors voilà j'ai dois faire un programme d'IMC sur ma TI-82, jusque là aucun problème. On m'a aidé à trouver etc, j'ai réussi mais le problème c'est que je voudrais rajouter au dessus de SURPOIDS, OBESE. Mais je n'y arrive pas, ça me met toujours SURPOIDS et OBESE en même temps..
Voici le programme sans OBESE.

:Input "M (en kg)=",M
:Input "T (en m)=",T
:M/T²->A
: Disp "IMC=",A
:If A<18
:Then
: Disp "MAIGRE"
:Else
:If A>25
:Then
: Disp "SURPOIDS"
:Else
: Disp "NORMAL"
:End


Et celui avec OBESE

:Input "M (en kg)=",M
:Input "T (en m)=",T
:M/T²->A
: Disp "IMC=",A
:If A<18
:Then
: Disp "MAIGRE"
:Else
:If A>25
:Then
: Disp "SURPOIDS"
:Else
:If A>30
:Then
: Disp "OBESE"
:Else
: Disp "NORMAL"
:End


Je ne sais pas d'où vient le problème, si vous pourriez m'aider ce serait sympa.
Merci au revoir ! bigmouth.gif
Samos le 10/10/2012 à 20:26
Code

:Input "M (en kg)=",M
:Input "T (en m)=",T
:M/T² -> A
: Disp "IMC=",A
:If A<18
:Disp "MAIGRE"
:If A>25 et A <= 30
:Disp "SURPOIDS"
:If A>30
:Disp "OBESE"
:If A >= 18 et A <= 25
:Disp "NORMAL"


Voila!
Lorsqu'on ne met pas de Then, la condition éxecute juste la ligne suivante.
Tu avais oublié de préciser que la masse est comprise entre 25 et 30 pour le surpoids.
Si la personne à un indice de 35, Il aurait été en surpoids et en obesité avec ton ancien programme clown.gif
blg_flg le 10/10/2012 à 20:29
Remarque, une personne obèse est aussi en surpoids, donc ce n'était pas entièrement faux. happy.gif
None le 10/10/2012 à 20:40
Bonsoir, merci de votre réponse mais
:Input "M (en kg)=",M
:Input "T (en m)=",T
:M/T² -> A
: Disp "IMC=",A
:If A<18
:Disp "MAIGRE"
:If A>25 et A <= 30
:Disp "SURPOIDS"
:If A>30
:Disp "OBESE"
:If A >= 18 et A <= 25
:Disp "NORMAL"

C'est supérieur ou égal / inférieur ou egal ? ? Est-ce que je met le ET ?
Merci d'avance.
blg_flg le 10/10/2012 à 20:55
<= correspond à inférieur ou égal et >= à supérieur ou égal.

Et il faut que tu mettes le "et" (ou "and" si ta calto est en anglais) du menu "test". winkle.gif
None le 10/10/2012 à 20:59
J'ai fait exactement le même programme, mais j'ai une erreur syntaxe :/
blg_flg le 10/10/2012 à 21:02
Où ça?
None le 10/10/2012 à 21:04
Quand je fais 90 kg pour 1M60, ça me fait erreur syntaxe.
Après je reclique sur entrer et ça me met l'IMC mais sans OBESE, Ni surpoids..

J'ai reproduit ce programme, à l'identique sans les Then, Else et End

Citation
:Input "M (en kg)=",M
:Input "T (en m)=",T
:M/T² -> A
: Disp "IMC=",A
:If A<18
:Disp "MAIGRE"
:If A>25 et A <= 30
:Disp "SURPOIDS"
:If A>30
:Disp "OBESE"
:If A >= 18 et A <= 25
:Disp "NORMAL"


Je dois les laisser ?
blg_flg le 10/10/2012 à 21:25
Fais "VOIR" et indique nous où est le bug. winkle.gif
linkakro le 10/10/2012 à 21:31
L'espace en début de ligne est une faute de frappe, tu ne devrais pas l'avoir copié mais puisque tu plantes je propose quand même.

Celle DES solutions la plus complète est la suivante ; j'ai ajouté des indentations pour mettre en valeur la structure des boucles.
Il y a bien d'autres solutions mais elles sont moins rigoureuses.
Code
Input "M (en kg)=",M
Input "T (en m)=",T
M/T² -> A
Disp "IMC=",A
If A<=18
Then
 Disp "MAIGRE"
Else
 If A<=25
 Then
  Disp "NORMAL"
 Else
  If A<=30
  Then
   Disp "SURPOIDS"
  Else
   Disp "OBESE"
  End
 End
End

EDIT 15/10/2012 : solution économe en If (mais pas en condition) :
Code
Input "M (en kg)=",M
Input "T (en m)=",T
M/T² -> A
Disp "IMC=",A
If A<=18
Disp "MAIGRE"
If 18<=A et A<=25
Disp "NORMAL"
If A<=30
Disp "SURPOIDS"
If 30<A
Disp "OBESE"
None le 10/10/2012 à 21:45
Re, j'ai réussi le programme.

Merci à vous ! bigmouth.gif
thedarkprogrammeur le 14/10/2012 à 22:29
C'est marrant , j'ai déjà créé le même programme sur ma TI bigmouth.gif cupsmiley.gif
linkakro le 14/10/2012 à 22:35
Je le vois en deux ou trois exemplaires chaque année. winkle.gif
thedarkprogrammeur le 14/10/2012 à 22:45
moi le mien il est comme cela:
:EffEcr
:Input "VOTRE POID (KG) ",M
:Input "VOTRE TAILLE (M)",T
:M/(T²)->R
:EffEcr
:Disp "VOTRE IMC EST DE",R
:If R <= 12:Disp"ANNOREXIE GRAVE"
:If R > 12 et R <= 16.5 : Disp "DENUTRITION"
:If R > 16.5 et R <= 18.5 : Disp "MAIGREUR"
:If R > 18.5 et R <= 25 : Disp "POID CORRECT"
:If R > 25 et R <= 30 : Disp "SURPOID"
:If R > 30 et R <= 35 : Disp "OBESITE MODEREE"
:If R > 35 et R <= 40 : Disp "OBESITE SEVERE"
:If R >40 : Disp "OBESITE MORBIDE"

Voilà, dans ma version, je n'ai pas mit de "Then...End", est-ce que vous pensez que c'est indispensable? ou que sa n'affecte pas du tout le programme quand il est écrit sous cette forme ?
Merci encore
linkakro le 14/10/2012 à 22:50
Cela n'affecte pas le programme car les conditions sont strictement exclusives (il ne peut pas y en avoir deux de vrai en même temps) et que les instructions qui en dépendent ne font qu'une seule ligne.
thedarkprogrammeur le 14/10/2012 à 23:34
donc ma version est ok happy.gif
thedarkprogrammeur le 14/10/2012 à 23:38
attention none il y a plusieurs boucles que tu n'a pas fermé, suis l'exemple que linkakro te donne au dessus glasses.gif (je voulais mettre un smiley clin d'oeil, mais comme y'en a pas , je met celui là)
blg_flg le 15/10/2012 à 20:58
HS: Fais ; ) (sans l'espace) winkle.gif