Créer un tableau sur c++ - Page 2
Répondre à la discussion
Page 2 sur 2 PremièrePremière 2
Affichage des résultats 31 à 45 sur 45

Créer un tableau sur c++



  1. #31
    Ikhar84
    Animateur Informatique

    Re : Créer un tableau sur c++


    ------

    Citation Envoyé par pm42 Voir le message
    Une struct est l'équivalent d'une "case class" en programmation objet. Cela peut être parfaitement adapté et c'est largement plus abordable pour un débutant qu'un objet classique C++ avec getter/setter.
    Oui je pensais dans le sens commencer à maitriser l'objet et s'eloigner du C, les structures ne sont pas une mauvaise chose bien au contraire, voir les code des OS...

    Pour les question:
    On ne met pas plusieurs type de variable dans une ligne mais une seule : la structure. Qui elle regroupe plusieurs type...
    On a pas besoin de tableau multidimensionnel (au sens strict) ici, il s'agit d'un tableau de "Patients", une structure definie.

    Et si on utilise un vector, plus besoin de tableau, le vector est le conteneur, une sorte de tableau, plus facile à manipuler qu'un tableau brut.
    Il suffit dolc de declarer un vector et y ajouter les Patients au fur et à mesure de leur création.
    Il n'y a pas de tableau de vecteur donc... à moins de vouloir gerer plusieurs hôpitaux, où chaque vector du tableau representerait un hôpital, avec l'ensemble de ses patients... est ce plus clair enoncé comme cela ?

    Edit: pour ne pas embrouiller le demandeur (et ne pas polluer la discussion) je vais laisser pm42 prendre la main seul...

    -----
    Dernière modification par Ikhar84 ; 27/12/2017 à 19h51.
    J'ai glissé Chef !

  2. #32
    Bjrn

    Re : Créer un tableau sur c++

    Oui exact je ne sais pas pourquoi je me complique les choses

    Que pensez-vous de ce code ? Il n'est pas complet, mais j'ai essayé d'utiliser les vecteurs.
    N'hésitez pas à critiquer, je souhaite l'améliorer au maximum.


    code
    Code HTML:
    
    
    
    typedef struct
            {
                string nom;
                string prenom[50];
                int     age ;
                float   taille, poids ;
                char    sexe ;
                
            } Patient;
        
        Patient patientA, patientB, patientC, patientD, patientE ;
        
    
        vector<Patient> liste; // on crée le tableau vide
        
        liste.push_back(Patient()); // Mon patient A
        liste.back().nom = "Anna";
        liste.back().age=35;
        liste.back().taille=1.68;
        liste.back().poids=67.8;
        liste.back().sexe='F';
        
        cout<<"L'age du patient A est : "<<liste.back().age<<endl; // affiche l'age du patient A par exemple
    
    
        liste.push_back(Patient()); // Mon patient B
        liste.back().nom = "sofi";
        liste.back().age=45;
        
        cout<<"L'age du patient B est : "<<liste.back().age<<endl;
        
        
        return 0;
        
    }

  3. #33
    Jack
    Modérateur

    Re : Créer un tableau sur c++

    Code:
    typedef struct
            {
                string nom;
                string prenom[50];
                int     age ;
                float   taille, poids ;
                char    sexe ;
                
            }Patient;
    Pas la peine de faire un typedef. Je t'ai donné le modèle dans mon message#4:
    Code:
     struct Patient
    {
                string nom;
                string prenom[50];
                int     age ;
                double taille, poids ;
                char    sexe ;            
    } ;
    De plus, préfère les double aux float.

    Pourquoi un tableau de 50 prénoms? S'il y a plusieurs prénoms, autant utiliser un vector ou une list.

    Code:
        liste.push_back(Patient()); // Mon patient A    liste.back().nom = "Anna";
        liste.back().age=35;
        liste.back().taille=1.68;
        liste.back().poids=67.8;
        liste.back().sexe='F';
    Je ne pense pas que ça marche. Je commencerais plutôt par remplir la structure avant de l'ajouter au vector:
    Code:
        patientA.nom = "Anna";
        patientA.age=35;
        patientA.taille=1.68;
        patientA.poids=67.8;
        patientA.sexe='F';
        liste.push_back(PatientA); // Mon patient A
    Dernière modification par Jack ; 27/12/2017 à 20h34.

  4. #34
    Bjrn

    Re : Créer un tableau sur c++

    Lorsque j'essaie d'utiliser seulement un struct, cela me sort tout un tas de message d'erreurs... J'ai pu lire sur un site en anglais que "typedef" et "struct" ne présentent pas de grosses différences pour le langage C++. Ai-je bien compris ? Sinon quelles sont les différences ?


    Concernant votre réponse "Je commencerais plutôt par remplir la structure avant de l'ajouter au vector" : j'ai pu constaté que mon code fonctionnait tout à l'heure, je ne sais pas si l'ordre compte réellement ou si c'est la chance du débutant.

    Je me rends compte que je m'éloigne un tout petit peu de mon sujet : en fait le programme doit demander au médecin d'entrer les données médicales (comme Wass).
    J'ai donc essayé de prendre cela en compte, tout en stockant les valeurs données par le médecin dans un vecteur.
    Voici mon nouveau code :

    code
    Code HTML:
    
    typedef struct
            {
                string nom;
                string prenom;
                int     age ;
                double   taille, poids ;
                char    sexe ;
                
            } Patient;
        
        Patient patientA, patientB, patientC, patientD, patientE ;
        
    
        vector<Patient> liste; // on crée le tableau vide
    
        liste.push_back(patientA);
        
        cout<<"Saisir le nom de la patiente : ";
        cin>>liste.back().nom;
        
        cout<<"Saisir la taille de la patiente : ";
        cin>>liste.back().taille;
        
        cout<<"Saisir le poids de la patiente : ";
        cin>>liste.back().poids;
        
        cout<<"Saisir le sexe de la patiente : ";
        cin>>liste.back().sexe;
        
        cout<<"Saisir l'âge de la patiente : ";
        cin>>liste.back().age;
    
        
        cout<<"L'age du patient A est : "<<liste.back().age<<endl; // affiche l'age du patient A par exemple
    
        
        return 0;
        
    }
    


    Je vois que mon programme semble bien stocker les valeurs entrées puisque j'obtiens bien l'âge de la patiente que j'ai entré plus tot.

    Mais maintenant, si je voulais afficher toutes les données de cette patiente (pas uniquement l'âge) comment je devrais procéder ?
    Une boucle ? ou autre chose ?

    Je tâtonne mais j'espère y arriver !!

  5. #35
    Jack
    Modérateur

    Re : Créer un tableau sur c++

    j'ai pu constaté que mon code fonctionnait tout à l'heure, je ne sais pas si l'ordre compte réellement ou si c'est la chance du débutant.
    Un peu, tu as la chance que back() renvoie une référence sur l'élément du vecteur et pas une simple copie.
    Mais maintenant, si je voulais afficher toutes les données de cette patiente (pas uniquement l'âge) comment je devrais procéder ?
    Une boucle ? ou autre chose ?
    il faut faire des cout avec chacun des champs de la structure: nom, age, poids, etc..

  6. #36
    Chanur

    Re : Créer un tableau sur c++

    Citation Envoyé par Bjrn Voir le message
    Lorsque j'essaie d'utiliser seulement un struct, cela me sort tout un tas de message d'erreurs...
    La syntaxe est :
    Code:
    struct Patient
    {
    ici les champs dont tu as besoin
    };
    le nom n'est pas à la fin mais après le mot-clef struct.
    Ce qui se conçoit bien s'énonce clairement ; et les mots pour le dire arrivent aisément.

  7. #37
    Jack
    Modérateur

    Re : Créer un tableau sur c++

    Hé oui. Pourtant je lui ai donné un exemple complet dans mon message #33 où il y aura juste le cas du prénom à revoir.
    Je note que Bjrn n'a toujours pas répondu à ce point.

  8. #38
    Bjrn

    Re : Créer un tableau sur c++

    Bonjour à tous,

    J'ai donc suivi vos conseils :
    - j'ai remplacé le "typedef" par struct.
    - j'ai également changé l'ordre concernant la saisie des données dans le vecteur.

    J'ai testé mon programme pour 2 patientes pour faire simple, et cela a fonctionné. Les données s'affichent correctement. Je vous remercie !

    Je me demandais si à la place d'utiliser des "cout" pour afficher chacune de mes données, je pouvais avoir une commande qui me donnait automatiquement toutes les lignes du vecteur. Autrement dit, y'a-t-il une commande pour afficher les dossiers médicaux de mes 2 patientes en même temps (à la suite) et non pas par des dizaines de "cout" ?


    code
    Code HTML:
    // Je déclare mes variables :
           struct Patient
            {
                string nom;
                string prenom;
                int     age ;
                double   taille, poids ;
                char    sexe ;
                
            };
     
        Patient patientA, patientB, patientC, patientD, patientE ;
    
        // on crée le tableau vecteur vide :
        vector<Patient> liste;
    
        // le médecin rentre les données médicales du patient A :
        cout<<"Saisir le nom du patient : ";
        cin>>patientA.nom;
        cout<<"Saisir la taille du patient : ";
        cin>>patientA.taille;
        cout<<"Saisir le poids du patient : ";
        cin>>patientA.poids;
        cout<<"Saisir le sexe du patient : ";
        cin>>patientA.sexe;
        cout<<"Saisir l'âge du patient : ";
        cin>>patientA.age;
    
        // Toutes ces données sont stockées dans la première ligne du vecteur :
        liste.push_back(patientA);
        
        cout<<endl;
        
        // Test pour vérifier que les données soient bien stockées :
        cout<<"Le nom du patient A est : "<<patientA.nom<<endl;
        cout<<"La taille du patient A est : "<<patientA.taille<<endl;
        cout<<"Le poids du patient A est : "<<patientA.poids<<endl;
        cout<<"L'age du patient A est : "<<patientA.age<<endl; // affiche l'age du patient A par exemple
       
        cout<<endl;
        
        // le médecin ajoute les données médicales d'un deuxième patient
        cout<<"Saisir le nom du patient : ";
        cin>>patientB.nom;
        cout<<"Saisir la taille du patient : ";
        cin>>patientB.taille;
        cout<<"Saisir le poids du patient : ";
        cin>>patientB.poids;
        cout<<"Saisir le sexe du patient : ";
        cin>>patientB.sexe;
        cout<<"Saisir l'âge du patient : ";
        cin>>patientB.age;
        
        // Toutes ces données sont stockées dans la deuxième ligne du vecteur :
        liste.push_back(patientB);
        
        cout<<endl;
        
        // Test pour vérifier que les données soient bien stockées dans le vecteur :
        cout<<"Le nom du patient B est : "<<patientB.nom<<endl;
        cout<<"La taille du patient B est : "<<patientB.taille<<endl;
        cout<<"Le poids du patient B est : "<<patientB.poids<<endl;
        cout<<"L'age du patient B est : "<<patientB.age<<endl; 
        
        
        
        return 0;
        
    }
        


    Dans le cadre de mon projet informatique, je dois entrer les données de 5 patients. Je peux donc les nommer de A à E.
    Mais en pratique, pour un médecin qui doit gérer beaucoup de patients, il n'y a pas une possibilité d'utiliser une boucle qui va gérer un nombre de patient allant de 0 à i ? Boucle dans laquelle les questions telles que la saisie des noms, prénoms, etc se répéteraient i fois, tout en stockant les valeurs pour chaque patient ?

    Voici une idée de boucle que j'ai eu mais je ne suis pas du tout sure concernant la logique de mon raisonnement. En gros, je saisie les données du patient A, si la dernière saisie correspond à un "OK" alors la boucle de saisie de données se répète pour un deuxième patient.

    code
    Code HTML:
    do {
    
        //saisie des données
        
        cout<<"Saisir OK si vous avez terminé ou PLUS si vous voulez rajouter des patients ";
        cin>>x;
        
    }while(x!= "OK");

    C'est un peu long, je ne sais pas si je suis assez claire, je l'espère du moins. Merci à vous !

  9. #39
    Jack
    Modérateur

    Re : Créer un tableau sur c++

    Je me demandais si à la place d'utiliser des "cout" pour afficher chacune de mes données, je pouvais avoir une commande qui me donnait automatiquement toutes les lignes du vecteur. Autrement dit, y'a-t-il une commande pour afficher les dossiers médicaux de mes 2 patientes en même temps (à la suite) et non pas par des dizaines de "cout" ?

    Non, le formatage de la sortie de tes données te revient: le programme ne peut pas savoir sous quelle forme tu veux que ça apparaisse.

    Pour la boucle, oui c'est une bonne idée. La partie saisie d'une fiche pourrait être regroupée dans une fonction, de même que son affichage. La condition de sortie de boucle peut être une option d'un menu (ajouter, editer, quitter), ou la saisie d'un nom vide, etc. Il ne faut pas te placer d'un point de vue technique et informatique, mais d'un côté utilisateur: comment un utilisateur voudrait-il que se déroule ce programme?

  10. #40
    Ikhar84
    Animateur Informatique

    Re : Créer un tableau sur c++

    Citation Envoyé par Jack Voir le message
    Non, le formatage de la sortie de tes données te revient: le programme ne peut pas savoir sous quelle forme tu veux que ça apparaisse.

    Pour la boucle, oui c'est une bonne idée. La partie saisie d'une fiche pourrait être regroupée dans une fonction, de même que son affichage. La condition de sortie de boucle peut être une option d'un menu (ajouter, editer, quitter), ou la saisie d'un nom vide, etc. Il ne faut pas te placer d'un point de vue technique et informatique, mais d'un côté utilisateur: comment un utilisateur voudrait-il que se déroule ce programme?
    Re...
    D'où l'interêt de la POO...

    Avec une classe Patient, outre les attributs (idem que pour la structure), on peut concevoir une methode d'affichage, ou une methode toString() par exemple...
    La methode d'affichage s'occupe d'afficher toutes les données du patient courant, formatées comme il faut.
    La toString() (nom non contractuel), s'occupe de formater les données et les retourne dans un string utilisable par in cout...

    Idem pour une classe conteneur Service (ou Hopital...), où l'attribut serait le vecteur, et pour laquelle on pourrait définir les même méthodes que celle ci-dessus, mais qui gère l'affichage pour la totalité des patients présents dans le vecteur...

    Bien conçu cela peut être pas mal.
    Dans les vrais programmes (graphiques), les classes ne gèrent pas leur affichage, la conception étant plus "cloisonnée" (classes metiers, UI, dataAccess,...) mais un mécanisme similaire permet de formater les données de l'objet proprement, l'affichage étant géré par les classes UI...
    J'ai glissé Chef !

  11. #41
    Jack
    Modérateur

    Re : Créer un tableau sur c++

    Oui, mais la POO en autodidacte alors qu'on débute en programmation, ça risque de ne pas passer.

  12. #42
    pm42

    Re : Créer un tableau sur c++

    En C++, il y a une méthode plus simple qui marche avec les structs : définir un opérateur << adapté.
    Encore une fois répéter qu’il faut faire de la pure POO à un débutant qui découvre les boucles et sans apparemment maîtriser le langage ne me semble pas productif.

  13. #43
    Ikhar84
    Animateur Informatique

    Re : Créer un tableau sur c++

    Je pensais plus à une legère intro sur la POO, avec un point bien précis, demandé par le posteur, je pense que c'est à sa portée, pas à le guider vers la POO "de force". Mais la redefinition de l'opérateur << réponds parfaitement, quoique pas nécessairement plus façile a maitriser qu'une bête classe comportant un vecteur et une seule méthode retournant un string...

    De plus, commencer à reflechir à la structure d'un programme, et ne pas programmer à la volée au fur et à mesure que l'on decouvre les mecanisme d'un langage me semble bien une méthode productive sur le long terme.

    Il sera bien temps de lui expliquer l'objet (puis l'evenementiel) quand il aura fait le tour des saisies en mode texte et de l'affichage en colonnes sur la console...

    Bref, comme dit précedemment, je ne souhaite ni pertuber le demandeur, ni polluer la discussion, j'ai juste apporté la réponse qui me semblait la plus pertinente à la question de l'affichage de l'ensemble des données de l'ensemble des patients...
    J'ai glissé Chef !

  14. #44
    Bjrn

    Re : Créer un tableau sur c++

    Bonjour à tous et merci pour vos réponses.

    Je suis très motivée pour avoir un très bon programme. En réalité, je dois aller bien au delà de ce qui a été traité en quelques cours basiques que j'ai pu suivre.
    C'est bien là l'objectif du projet : dépasser les maigres notions vues en cours afin d'apprendre par soi-même en utilisant net et livres. Je n'ai pas de consignes bien précises mais je dois proposer un programme qui pourrait réellement servir à un médecin.

    C'est exactement cela Jack, je dois optimiser mon programme en me mettant à la place du médecin.
    Un médecin voudrait que le programme :
    - demande les données à saisir,
    - stock ces données pour chaque patient (constitution de fiche patient),
    - affiche la fiche complète d'un unique patient en la retrouvant grâce à son numéro de dossier médical ou bien son nom de famille,
    - calcule automatiquement l'IMC de chaque patient après avoir saisi taille et poids,
    - puisse définir qui est malade selon les données médicales saisies,
    - soit dans une présentation claire et visible (je pense à une interface graphique même si c'est ambitieux).


    Voila ce sont mes idées et je suis sure que j'en aurai d'autres à venir. Je souhaite les concrétiser au mieux même si je dois passer par de la POO.
    N'hésitez pas à aiguiller mes recherches merci à tous.

  15. #45
    Jack
    Modérateur

    Re : Créer un tableau sur c++

    Dans ce cas, autant créer une classe Patient: tu remplaces struct par class, tu mets tous les attributs (nom, poids, etc.) en private et tu ajoutes en public tous les services que doit fournir cette classe (ajout, modification, suppression d'une fiche, calcul de l'IMC, etc.).

    Quel type d'études suis-tu? Si ce sont des études en informatique, le temps que tu vas passer sera effectivement de l'nvestissement.
    Dernière modification par Jack ; 29/12/2017 à 10h31.

Page 2 sur 2 PremièrePremière 2

Discussions similaires

  1. Créer un circuit secouru dans le tableau électrique
    Par flash17 dans le forum Bricolage et décoration
    Réponses: 3
    Dernier message: 04/06/2016, 10h55
  2. Créer une prise de courant depuis le tableau électrique (débutante)
    Par Sunflower1977 dans le forum Bricolage et décoration
    Réponses: 7
    Dernier message: 22/09/2014, 18h44
  3. Alimentation d'un tableau divisionnaire depuis tableau principal
    Par wonderfulif dans le forum Bricolage et décoration
    Réponses: 2
    Dernier message: 19/09/2013, 17h22
  4. Réponses: 3
    Dernier message: 31/07/2010, 08h01
  5. Réponses: 1
    Dernier message: 21/09/2009, 16h26