IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Turbo Pascal Discussion :

[TP] Programme affichage de poids, sexe, taille


Sujet :

Turbo Pascal

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2007
    Messages
    49
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : Tunisie

    Informations forums :
    Inscription : Février 2007
    Messages : 49
    Par défaut [TP] Programme affichage de poids, sexe, taille
    salut
    qui peux me corriger cet exercice??
    Ecrire un prog qui permet de saisir le sexe, la taille(cm), et le poids d'une personne et d'afficher:
    -PI, le poids idéal d'une personne, sachant que ce poids théorique est donné par la formule de Lorenz comme suit:
    Pour un homme: PI=(taille-100)-(taille-150)/4
    Pour une femme: PI=(taille-100)-(taille-120)/4
    -BMI, l'indicateur d'obésité ou BMI=poids/taille au carré avec taille en metre.
    -si une personne est considérée comme: normale(BMI=<27) ou obèse(BMI>27) ou malade(BMI>=32)

    mon travail:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    program ideal;
    uses wincrt;
    var
    pi,p,t,bmi:real;
    s:string;
    begin
    writeln('donner le sexe, la taille et le poids de la personne');
    readln(s,t,p);
    if(s:='homme') then write('homme');
    readln(p);
    pi:=(t-100)-(t-150)/4
    if(p=pi) then write('poids ideal');
    else if(s:='femme') then write('femme');
    pi:=(t-100)-(t-120)/4;
    if(p=pi) then write('poids ideal');
    bmi:=p/sqr(t);
    if(bmi<27) then write('normale');
    else if(bmi>27 then write('obèse');
    else if(bmi>=32) then write('malade');
    End.

  2. #2
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 967
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 967
    Par défaut
    Koi,

    Ton code mélange allègrement les lignes, remets de l'ordre dans tout ça.

    Les tests sur bmi sont faux.

    Je n'ai pas cherché de plus près

  3. #3
    Membre expérimenté Avatar de Ultima
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2006
    Messages
    223
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2006
    Messages : 223
    Par défaut
    Bonsoir,
    Je crois sérieusement que si tu faisais l'effort de chercher tes erreurs d'inattention toi-même, tu t'amélioreras en programmation.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    program ideal;
    
    uses WinCRT;
    
    var
      pi,p,t,bmi : REAL  ;
      s          : STRING;
      
    begin
      writeln('donner le sexe, la taille et le poids de la personne');
      readln(s,t,p);                        // Ne jamais mettre des variables de types différents dans un même appel à la fonction readln.
      if(s:='homme') then write('homme');   // l'opérateur de comparaison est = , et non :=
      readln(p);                            // complètement inutile
      pi:=(t-100)-(t-150)/4                 // ne pas oublier les points virgules après chaque instruction.
      if(p=pi) then write('poids ideal');   // Dans une boucle if then esle, aucun point virgule ne doit précéder else
      
      else if(s:='femme') then write('femme'); // l'opérateur de comparaison est = , et non :=
      pi:=(t-100)-(t-120)/4;
      if(p=pi) then write('poids ideal');
      bmi:=p/sqr(t);
      if(bmi<27) then write('normale');    // Dans une boucle if then esle, aucun point virgule ne doit précéder else
      else if(bmi>27 then write('obèse');  // Dans une boucle if then esle, aucun point virgule ne doit précéder else
                                           // ne pas oublier de fermer les parenthèses.
      else if(bmi>=32) then write('malade');
    End.
    correction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    program ideal;
     
    uses WinCRT;
     
    var
      pi,p,t,bmi : REAL  ;
      s          : STRING;
     
    begin
      writeln('donner le sexe, la taille et le poids de la personne');
      readln(s);
      readln(t,p);
     
      if(s='homme') then write('homme');
     
      pi:=(t-100)-(t-150)/4;
      if(p=pi) then write('poids ideal')
      else if(s='femme') then write('femme');
     
      pi:=(t-100)-(t-120)/4;
      if(p=pi) then write('poids ideal');
     
      bmi:=p/sqr(t);
      if(bmi<27) then write('normale')
      else if(bmi>27) then write('obèse')
      else if(bmi>=32) then write('malade');
    End.

  4. #4
    Rédacteur/Modérateur
    Avatar de M.Dlb
    Inscrit en
    Avril 2002
    Messages
    2 466
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Avril 2002
    Messages : 2 466

  5. #5
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 967
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 967
    Par défaut
    mik,
    Citation Envoyé par Ultima
    Je crois sérieusement que si tu faisais l'effort de chercher tes erreurs d'inattention toi-même, tu t'amélioreras en programmation.
    +1, évidemment

    Citation Envoyé par Ultima
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ...
      if(p=pi) then write('poids ideal');   // Dans une boucle if then esle, aucun point virgule ne doit précéder else
    La structure de contrôle if then else n'est pas une boucle

    Citation Envoyé par Ultima et The future scientist
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
      bmi:=p/sqr(t);
      if(bmi<27) then write('normale')
      else if(bmi>27) then write('obèse')
      else if(bmi>=32) then write('malade');
    End.
    Que se passe-t-il si 27 <= bmi < 32 ?
    On écrit 'obèse' ET 'malade'. Est-ce voulu ? après lecture de l'énoncé, on dirait bien que oui.
    Mais le 1er test devrait être
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    ...
      if(bmi<=27) then write('normale')
    ...

  6. #6
    Membre Expert
    Avatar de Loceka
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    2 276
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 2 276
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
      bmi:=p/sqr(t);
      if(bmi<27) then write('normale')
      else if(bmi>27) then write('obèse')
      else if(bmi>=32) then write('malade'); // 32 est toujours > 27 on ne passe donc jamais dans cette condition.
    Tu veux plutôt dire qu'on n'écrit jamais malade...

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Février 2007
    Messages
    49
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : Tunisie

    Informations forums :
    Inscription : Février 2007
    Messages : 49
    Par défaut
    Citation Envoyé par Loceka
    Tu veux plutôt dire qu'on n'écrit jamais malade...
    Comment ne jamais écrire malade??? mais il y a une valeur après laquelle on devient malade! et celà quand la BMI dépasse 32

  8. #8
    Membre Expert
    Avatar de Loceka
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    2 276
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 2 276
    Par défaut
    Eh bien essaye juste cette partie du code.

    Le principe de if .. then .. else .. c'est d'avoir des conditions mutuellement exclusives parce que si tu rentres dans le premier if, le programme "empêche" que tu ailles dans le else (c'est le but de la manoeuvre à vrai dire).

    Si tu veux qu'il vérifie quand même la valeur, il faut utiliser 2 if

    Execute ce code à titre d'exemple et tu verras comment se comporte if .. then .. else .. :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    procedure ite(val : integer);
    begin
      if (val <= 1) then writeln('val <= 1')
      else if (val > 1) then writeln('val > 1')
      else if (val > 2) then writeln('val > 2'); { tu remarqueras que tu ne passes jamais dans cette condition }
    end;
     
    procedure it(val : integer);
    begin
      if (val <= 1) then writeln('val <= 1')
      else if (val > 1) then writeln('val > 1');
      if (val > 2) then writeln('val > 2'); { si val > 2 tu auras 2 messages, remarque bien que j'ai supprimé le 'else' }
    end;
     
     
    var
      v : integer;
    begin
      writeln('entrer une valeur. ');
      readln(v);
      writeln('procedure ite : ');
      ite(v);
      writeln(); writeln('procedure it : ');
      it(v);
    end.

  9. #9
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 967
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 967
    Par défaut
    Kau,
    Citation Envoyé par Loceka
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
      bmi:=p/sqr(t);
      if(bmi<27) then write('normale')
      else if(bmi>27) then write('obèse')
      else if(bmi>=32) then write('malade'); // 32 est toujours > 27 on ne passe donc jamais dans cette condition.
    Tu veux plutôt dire qu'on n'écrit jamais malade...
    C'est vrai, j'ai "sauté le "else".

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Février 2007
    Messages
    49
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : Tunisie

    Informations forums :
    Inscription : Février 2007
    Messages : 49
    Par défaut
    Citation Envoyé par droggo
    mik,

    Que se passe-t-il si 27 <= bmi < 32 ?
    On écrit 'obèse' ET 'malade'. Est-ce voulu ? après lecture de l'énoncé, on dirait bien que oui.
    Mais le 1er test devrait être
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    ...
      if(bmi<=27) then write('normale')
    ...
    oui dans l'enoncé normale c'est BMI<= 27

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Février 2007
    Messages
    49
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : Tunisie

    Informations forums :
    Inscription : Février 2007
    Messages : 49
    Par défaut
    Citation Envoyé par Ultima
    Bonsoir,
    Je crois sérieusement que si tu faisais l'effort de chercher tes erreurs d'inattention toi-même, tu t'amélioreras en programmation.
    Salut,
    Je ne peux pas nier,moi meme, que je suis faible en programmation mais il faut voir les conditions!periode de devoirs, en plus on ne donne pas d'importance à l'informatique dans notre section"maths", ce n'est que coefficient 1 donc moi je n'ai pas du temps pour bien avancer en programmation, je me contente, dans cette periode, des remarques que vous me procurez concernant mes programmes faux et en vacances d'été je vais vaincre le prog turbo pascal, soyez sure!!!
    Merci ultima pour avoir montré les fautes.

  12. #12
    Nouveau candidat au Club
    Inscrit en
    Juin 2007
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 2
    Par défaut
    voilà votre programme après correction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    program ideal;
    uses wincrt;
    var
    pi,p,t,bmi:real;
    s:string;
    begin
    writeln('donner le sexe, la taille et le poids de la personne');
    readln(s,t,p);
    if(s='homme') then writeln('homme');
    pi:=(t-100)-(t-150)/4 ;
    if(p=pi) then write('poids ideal')
    else if(s='femme') then write('femme');
    pi:=(t-100)-(t-120)/4;
    if(p=pi) then write('poids ideal');
    bmi:=p/sqr(t);
    if(bmi<27) then write('normale')
    else if(bmi>27) then write('obèse')
    else if(bmi>=32) then write('malade');
    End.
    à votre service

  13. #13
    Membre Expert
    Avatar de krachik
    Inscrit en
    Décembre 2004
    Messages
    1 964
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 964
    Par défaut
    Cool mais moi j'appele pas ça correction mais plutot ....................
    Citation Envoyé par afi_ba
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
         if(s='homme') then 
                   writeln('homme');
         pi:=(t-100)-(t-150)/4 ;
         if(p=pi) then 
                   write('poids ideal')
         else if(s='femme') then 
                   write('femme');
         pi:=(t-100)-(t-120)/4;
    avec cette identation tu peux remarquer que tu as mis les if else if
    n'importe comment et en plus le premier et le second pi sont executer dans tous les cas,alors t'a bien compris ce qu'on voulais faire?
    @+

Discussions similaires

  1. Réponses: 8
    Dernier message: 30/03/2009, 12h34
  2. Affichage du poids du fichier dans barre d'état
    Par etorria dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 25/03/2008, 18h20
  3. Affichage formulaire en Maxi taille
    Par MAMANHOU dans le forum IHM
    Réponses: 8
    Dernier message: 26/08/2007, 21h47
  4. Réponses: 4
    Dernier message: 23/04/2007, 22h46
  5. affichage image de grande taille
    Par guigo dans le forum Langage
    Réponses: 1
    Dernier message: 20/06/2006, 18h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo