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

 C++ Discussion :

Programmer en c++ un exercice


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Inscrit en
    Octobre 2008
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 3
    Par défaut Programmer en c++ un exercice
    bonsoir,
    ecrire un programme qui permet de saisir le sexe(M/F),la taille(cm),et le poids(kg) d'une personne et d'afficher le poids ideal(IP)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

    voilà ma tentative
    Code C++ : 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
     
    include<iostream.h>
    float sx,tail,poid,PF,PM
    char le poid ideal pour la femme,le poids ideal pour un homme
    main()
    cout<<"donner le sexe(H/F)">>
    cin sx
    cout<<donner la taille">>
    cin tail
    cout<<""donner le poids">>
    PF=((tail-100)-(tail-150))/4
    PM=((tail-100)-(tail-120))/4
    if(sx=M)
    {
    le poid ideal pour un homme est <<PM
    }
    else(sx=H)
    {
    le poid ideal pour la femme est<<PF
    }
    finsi
    return0
    }
    carrement je sais que j'ai fait des gros betises mais je suis qu'une debutante et j'ai besoin de votre aide
    merci !

  2. #2
    Modérateur
    Avatar de ToTo13
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Janvier 2006
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 793
    Par défaut
    Bonjour,

    tu es sur le forum algorithme et non pas C++, donc je déplace ton message.

    Sinon, est ce que déjà tu as essayé de compiler ce morceau de code pour savoir si l'écriture est juste ? La réponse est non car la syntaxe est fausse : ça ressemble à moitié à du C++ et à moitié à du pseudocode.
    Pour les erreurs immédiate car je ne connais pas le C++ :
    - il manque un # devant include.
    - il doit manquer des chevrons avec le cin (mais ça je n'en suis pas certain, je connais pas le C++).
    - le test du if est une affectation et non un test.
    - pas de finsi nécessaire.
    - le return est mal écrit.
    - il faudrait que tu indentes ton code afin de le rendre plus lisible.
    - il est inutile d'utiliser deux variables PF et PH pour calculer les indices, une seule suffit. Seul une petite partie du calcul change en fonction du sexe.

    Ensuite, je pense que la formule que tu nous as donné est fausse car tu n'utilise pas le poids
    Consignes aux jeunes padawans : une image vaut 1000 mots !
    - Dans ton message respecter tu dois : les règles de rédaction et du forum, prévisualiser, relire et corriger TOUTES les FAUTES (frappes, sms, d'aurteaugrafe, mettre les ACCENTS et les BALISES) => ECRIRE clairement et en Français tu DOIS.
    - Le côté obscur je sens dans le MP => Tous tes MPs je détruirai et la réponse tu n'auras si en privé tu veux que je t'enseigne.(Lis donc ceci)
    - ton poste tu dois marquer quand la bonne réponse tu as obtenu.

  3. #3
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Par défaut
    Effectivement, il y a une quantité assez importante d'erruer de syntaxe dans ce code. Je les rectifie ci-dessous (sauf celles que j'oublie ), sans modifier la logique elle même (qui est aussi améliorable), mais j'ai peur que ça ne soit que de peu d'utilité. Il me semble nécessaire de reprendre calmement les bases du langage.

    Code C++ : 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
     
    #include<iostream>
     
    using namespace std;
     
    float tail,poid,PF,PM; // On utilise généralement double, pas float
    char sx;
     
    int main()
    {
        cout << "donner le sexe(H/F)";
        cin >> sx;
        cout << "donner la taille";
        cin >> tail;
        cout << "donner le poids";
        PF=((tail-100)-(tail-150))/4;
        PM=((tail-100)-(tail-120))/4;
        if(sx=='M')
        {
           cout << "le poid ideal pour un homme est " << PM;
        }
        else
        {
            cout << "le poid ideal pour la femme est" << PF;
        }
        return 0;
    }
    Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.

  4. #4
    Expert éminent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 644
    Par défaut
    Salut,

    Et, tant qu'à faire, parce que les variable globale "sémal", et parce qu'un code est beaucoup plus souvent lu qu'il n'est écrit
    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
    28
    29
    #include<iostream>
     
    using namespace std;
     
     
    int main()
    {
        float tail; //
        float poid; //  On utilise généralement double, pas float
        float PF;   //
        float PM;   //
        char sx;
        cout << "donner le sexe(H/F)";
        cin >> sx;
        cout << "donner la taille";
        cin >> tail;
        cout << "donner le poids";
        PF=((tail-100)-(tail-150))/4;
        PM=((tail-100)-(tail-120))/4;
        if(sx=='M')
        {
           cout << "le poid ideal pour un homme est " << PM;
        }
        else
        {
            cout << "le poid ideal pour la femme est" << PF;
        }
        return 0;
    }
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 537
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 537
    Par défaut
    Citation Envoyé par Fatima Zehra Voir le message
    pour un homme : PI= ((taille-100)-(taille-150))/4
    pour une femme : PI= ((taille-100)-(taille-120))4
    Entre nous ca va donner tout le temps 12.5 pour un homme et 5 pour une femme. Tu devrais revoir tes calculs.

  6. #6
    Futur Membre du Club
    Inscrit en
    Octobre 2008
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 3
    Par défaut
    veuillez m'excuser parceque je me suis trompée,en fait vous avez raison tant que la formule n'est que (taille-100)-(taille-150)/4 et l'autre sous le mm forme...
    voici le vrai selon notre prof d'informatique et puis vous allez remarquez qu'il ya une difference entre...
    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
    #include<iostream.H>
    #include<conio.H>
    float taille,pi
    char sexe
    cout<<"donner la taille",
    cin>>taille;
    cout<<"donner le sexe";
    cin>>sexe,
    if((sexe=='M')||(sexe=='m'))
    {
    pi=(taille-100...
    cout<<"votre poids ideal est:">>pi;
    else if((sexe=='F')||(sexe=='f');
    {
    pi=(taille-100...
    cout<<"votre poids ideal est:">>pi
    }
    else
    {
    cout<<"le sexe n'est pas valide";
    }
    return0
    }
    voyez vous?

  7. #7
    Expert éminent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 644
    Par défaut
    quelques petits conseils au passage:

    Tu devrais prendre l'habitude (surtout quand le code apparait sur le forum) d'indenter ton code de manière rigoureusement stricte.

    Par le fait "d'indenter ton code" , j'entends placer un nombre quelconque - mais toujours identique selon le niveau du bloc en cours (souvent 3 ou 4... mais évite les "tabulations" ) - d'espaces au début des lignes qui font partie d'un même "bloc d'instructions" (tout ce qui se trouve entre une accolade ouvrante "{" et l'accolade fermante "}" correspondante)

    La principale raison de ce conseil est que un code est bien plus souvent lu (principalement s'il se trouve sur un forum) qu'il n'est écrit et qu'un code qui te parrait absolument limpide au moment où tu l'écris peut te sembler bien nébuleux quand tu décide de le relire quelques semaines ou mois plus tard.

    Il existe plusieurs conventions d'indentation, nous nous ferons un plaisir - si tu en fais la demande - de te les présenter, et tu es bien sur tout à fait libre de choisir celle qui te convient le mieux, mais, en substance, ton code serait bien plus lisible par tour - car il devient bien plus facile de repérer les différents blocs d'instructions - s'il était formaté sous cette forme :
    #include<iostream.H>
    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
    #include<conio.H>
    int main()
        float taille,pi;
        char sexe;
        cout<<"donner la taille",
        cin>>taille;
        cout<<"donner le sexe";
        cin>>sexe,
        if((sexe=='M')||(sexe=='m'))
        {
            pi=(taille-100/* ... */)
            cout<<"votre poids ideal est:">>pi;
        }
        else if((sexe=='F')||(sexe=='f');
        {
            pi=(taille-100/*... */ )
            cout<<"votre poids ideal est:">>pi;
        }
        else
        {
            cout<<"le sexe n'est pas valide";
        }
        return0;
    }
    d'un autre coté, veille toujours à ce que ton code puisse être complié, même s'il est incomplet...

    C'est à dire que, si tu utilise des points de suspension, mets les en commentaires, et veille, de manière quasi systématique à placer ton code au sein d'une fonction (main, foo, bar ou la fonction réelle que tu essaye d'implémenter) et à bien terminer les différentes instructions par un point virgule ";"

    Enfin quelques avertissement de dernière minute:

    Le fichier d'en-tête <iostream.h> ne devrait plus être utilisé: il a été remplacé dans la norme par <iostream>.

    Outre le fait qu'il assure une compatibilité en fonction du compilateur utilisé, il faut juste prendre en compte que les éléments qu'ils déclare se trouvent tous dans l'espace de noms std, ce qui fait que l'on devra utiliser std::cin et std::cout ou - mais uniquement en dehors des fichiers d'en-tête - la directive using namespace std;

    Pour ce qui concerne le fichier conio.h... :
    • Il faut d'abord dire qu'il ne s'agit absolument pas d'un fichier standard: il a été créé à l'origine par Borland (si je ne m'abuse) et ne fonctionne que sous windows.
    • De plus, tu n'utilise absolument rien qui puisse justifier son inclusion dans le code que tu présente... Il n'y a donc strictement aucune raison de l'inclure


    Et pour terminer, l'algorithme pourrait avantageusement être amélioré pour:
    permettre d'insister jusqu'à ce que l'utilisateur introduise 'm','M','f' ou 'F'
    te permettre d'éviter des écritures "redondantes" (as tu remarqué à quel point, à part la formule qui change, le contenu du bloc if(sexe=='M' || sexe=='m') est semblable au bloc else if(sexe=='F' || sexe=='f') )

    Un bon programmeur est un programmeur paresseux (dans le bon sens du terme): il s'arrangera généralement pour ne pas avoir à faire plus que nécessaire, ce qui signifie qu'il préférera généralement passer par une phase de réflexion *peut être* un peu plus poussée

    Toutes ces raisons font que ton code pourrait très bien se transformer en quelque chose proche de
    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    #include <iostream> 
    /* ici, nous pouvons le faire: tout se passe dans le fichier principal */
    using namespace std;
    int main()
    {
        float taille; // je préfères, mais c'est une habitude perso,
        float pi;     // ne déclarer qu'une variable par ligne
        char sexe = ' '; // initialisons le sexe à une valeur que l'on sait
                         // invalide
        /* ca, ca ne change pas */
        cout<<"donner la taille",
        cin>>taille;
        /* noud allons insister tant que le sexe n'est pas valide
         * mais gérer les majuscules et les minuscules, c'est du boulot...
         * nous allons donc décider de convertir systématiquement
         * le sexe en majuscules (nous aurions pu choisir les minuscules ;) )
         */
        while(toupper(sexe)!='M' && toupper(sexe)!='F')
        {
            /* demandons à la personne d'introduire le sexe */
            cout<<"donner le sexe";
            cin>>sexe;
            /* si ce n'est pas bon, précison ce que l'on attend */
            if(toupper(sexe)!='M' && toupper !='F')
            {
                cout<<"veuillez choisir entre 'm','M','f' ou' F uniquement"<<endl;
            }
        }
        /* une fois que l'on arrive ici, nous somme sur de n'avoir affaire
         * qu'à des m (ou M) ou à des f (ou F)... nous pouvons donc
         * choisir de ne tester qu'une des solution, et de prendre l'autre
         * comme base pour le "else" :-D
         */
        if(toupper(sexe)=='M')
        {
            /* la seule chose qui change, c'est la formule à appliquer */
            pi = (taille-100/*... */ );
        }
        else
        {
            pi = (taille-100/*... */ );
        }
        /* nous pouvons maintenant afficher le poids idéal */
        cout<<"votre poids ideal est:"<<pi<<endl; /* attention à l'orientation des
                                                   * chevrons :D
                                                   */
        /* et quitter l'application avec un code de réussite */
        return 0;
    }
    Tu remarquera que j'ai ajouté énormément de commentaires...

    Cela rend le code du coup beaucoup plus impressionnant, mais ils sont là pour te permettre de comprendre ce qui est fait, et pourquoi...

    Rien ne t'empêche de les supprimer si tu le désire
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  8. #8
    Futur Membre du Club
    Inscrit en
    Octobre 2008
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 3
    Par défaut
    Merci pour tes précieuses remarques (ainsi que celles des autres)...
    bon enfin je crois c'est reglé pour cette fois!!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Recherche d'exercices de programmation Fortran
    Par feynman dans le forum Fortran
    Réponses: 2
    Dernier message: 01/09/2007, 13h24
  2. Exercice de programmation
    Par shangai3 dans le forum Pascal
    Réponses: 9
    Dernier message: 08/07/2007, 11h22
  3. [LG]Exercices de programmation
    Par belgaroui dans le forum Langage
    Réponses: 4
    Dernier message: 04/03/2005, 18h42

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