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 :

Problème If et variable assignment


Sujet :

C++

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2018
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2018
    Messages : 5
    Points : 2
    Points
    2
    Par défaut Problème If et variable assignment
    Bonjour

    Je galère un peu. J'essaie de recopier ce tableau en utilisant le If de c++.
    Il y a 4 niveaux de risques : faible, modéré, élevé, très élevé. Evidemment, si l'un est vrai, les autres ne peuvent pas l'être.
    Mon idée (et ca me servira pour la suite du programme) : pour chaque niveau de risque, créer une variable :
    faible = variable a
    ...
    très élevé = variable d.
    Puis : si a = true, b,c,d = false ; si b = true a,c,d = false etc.

    Voici le tableau, voici ce que j'ai codé pour le moment. Si vous avez des idées, je vous en remercie grandement.

    Niveau de risque cardio-vasculaire

    Faible
    SCORE < 1 %

    Modéré
    1 % ≤ SCORE < 5 %
    OU Diabète de type 1 ou 2 < 40 ans sans facteur de RCV ni atteinte d’organe cible

    Élevé
    5 % ≤ SCORE < 10 %
    OU Diabète de type 1 ou 2 :
    < 40 ans : avec au moins un facteur de RCV ou atteinte d’organe cible
    ≥ 40 ans sans facteur de RCV ni atteinte d’organe cible
    OU Patient ayant une insuffisance rénale chronique modérée
    OU TA ≥ 180/110 mmHg

    Très élevé
    SCORE ≥ 10 %
    OU Diabète de type 1 ou 2 ≥ 40 ans avec au moins un facteur de RCV ou atteinte d’organe cible
    OU Patient ayant une insuffisance rénale chronique sévère
    OU Maladie cardio-vasculaire documentée (prévention secondaire)


    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
    50
    51
    52
    53
    54
    55
    56
    57
    #include <iostream>
    #include <string>
     
    using namespace std;
     
    string sex, fdrcv, diabetique, mcv, ta;
    int score, age, dfg, chol, d, c, a, b;
     
    int main()
    {
     
     
     
        cout << "Quel âge avez vous? ";
        cin >> age;
     
     
        cout << "Quel est votre SCORE? ";
        cin >> score;
     
     
        cout << "Êtes vous diabétique? ";
        cin >> diabetique;
     
     
        cout << "Avez vous un FDR CV ou une atteinte d'un organe cible? ";
        cin >> fdrcv;
     
     
        cout <<"Quel est votre DFG (débit de filtration glomérulaire)? ";
        cin >> dfg;
     
     
        cout <<"Votre tension arterielle est elle supérieur ou égale à 180/110 (systolique/diastolique)?";
        cin >> ta;
     
     
        cout <<"Avez vous une maladie cardio-vasculaire documentée?";
        cin >> mcv;
     
     
        if (score < 1 && diabetique == "non" && fdrcv == "non" && dfg >= 60 && ta == "non" && mcv == "non" && age < 150)    
            cout <<  "Votre niveau de RCV est faible" << endl;
     
     
        if (((score >= 1  && score < 5 ) || (age < 40  && diabetique == "oui" && fdrcv == "non" )) && dfg >=60 && ta == "non" && mcv == "non")
            cout <<  "Votre niveau de RCV est modéré" <<  endl;
     
        if (((score >=5 && score < 10 ) || ((diabetique == "oui" && (age < 40 && fdrcv == "oui") && (age >= 40 && fdrcv == "non" ))) || (dfg < 60 && dfg >= 30) || (ta == "oui")))
            cout <<   "Votre niveau de RCV est élevé" << endl;
     
        if (((score >= 10) || (diabetique == "oui" && (age >= 40 && fdrcv == "oui")) || (dfg < 30 && dfg >= 5) || mcv == "oui"))
            cout <<  "Votre niveau de RCV est très élevé" << endl;    
     
     
     
    }

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 059
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 059
    Points : 12 095
    Points
    12 095
    Par défaut
    Votre exemple est le cas "standard" d'utilisation d'un système expert ( système à inférence/déduction par règle), le C++ n'est clairement pas le type de langage ( il est généraliste) qui s'adapte le mieux à ce type de problème.

    Mon idée (et ca me servira pour la suite du programme) : pour chaque niveau de risque, créer une variable :
    faible = variable a
    Ici, de mon point de vue, les niveaux de risque ne sont pas des variables, mais des constantes.
    C'est le "niveau de risque courant, celui de la personne" qui est variable.
    Je vous conseille donc d'avoir une énumération qui donne la liste des niveaux de risque possibles :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    enum risk_level
    {
       unknown,
       weak,
       moderate,
       high,
       very_high
    }
    Et vous aurait une variable "current_risk" du type de l'enum qui correspondra au niveau de risque de la personne.
    Après, une simple série de "if/else if" fera l'affaire:

    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
     
    if (((score >= 10) || (diabetique == "oui" && (age >= 40 && fdrcv == "oui")) || (dfg < 30 && dfg >= 5) || mcv == "oui"))
    {
        current_risk = very_high;
    }
    else if(((score >=5 && score < 10 ) || ((diabetique == "oui" && (age < 40 && fdrcv == "oui") && (age >= 40 && fdrcv == "non" ))) || (dfg < 60 && dfg >= 30) || (ta == "oui")))
    {
            current_risk = high;
    }
    else if(....)
    {
    ...
    }
    else{
            current_risk = unknown;
    }

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2018
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2018
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Merci pour votre réponse. Je sais maintenant que je dois passer par un moteur d'inference

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 31/08/2005, 11h05
  2. [PERL] problème désallocation de variable
    Par LE NEINDRE dans le forum Langage
    Réponses: 11
    Dernier message: 24/08/2005, 11h07
  3. Problème d'initialisation variable tableau
    Par HeZiX dans le forum Langage
    Réponses: 3
    Dernier message: 08/06/2005, 17h30
  4. Problèmes avec les variables final
    Par casolaro dans le forum Langage
    Réponses: 7
    Dernier message: 09/12/2004, 15h29
  5. Réponses: 6
    Dernier message: 28/05/2004, 10h39

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