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 :

Lecture d'un fichier texte contenant nom et notes d'élèves


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2015
    Messages : 3
    Par défaut Lecture d'un fichier texte contenant nom et notes d'élèves
    Bonjour à tous,
    j'ai le document suivant :

    Tarzan //nom de l'élève
    4 //nombre de note
    12.5
    13.0
    11.5
    9.0
    Zorro
    3
    15.5
    13.0
    17.5
    Hulk
    5
    12.5
    14.0
    9.5
    13.0
    10.5
    Superman
    2
    16.0
    17.0

    Ce que je veux faire est de stocker les noms de chaque personne dans un tableau dynamique et faire de même pour les notes de chaque élève. Donc j'ai essayé cela en créant une fonction prenant en argument le fichier ifstream en question, un vector de string et un vector<vector<double> > pour les notes (arguments recommandés par notre professeur) jusqu'ici tout va bien donc, ensuite j'ai essayé une boucle for répétant l'algorithme suivant :

    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
    void processFile(ifstream &inFile, vector<string> &names, vector<vector<double> > &marks)
    {
    string name; //nom de l'élève
    int nombreDeNotes;
    double noteBis;
    vector<double> notes;
    
    if (inFile)
    {
    for (int i=0 ; i<4 ; i++)
    {
         getline(inFile,name); //on récupère le nom de l'élève
         names.push_back(name); //on ajoute ce nom dans le tableau
         inFile>>nombreDeNotes; //on lit le nombre de note à lire
    
         int j=0;
         while(j<nombreDenotes)
         {
                while(inFile>>noteBis) //on lit les notes de l'élève
                {
                       notes.push_back(noteBis); //que l'on ajoute dans un tableau
                }
                j+=1;
                inFile.ignore();
          }
          marks.push_back(notes); //on ajoute ces tableaux de notes dans un tableau
    
    }
    (j'ai déjà choisi le fichier dans une autre fonction)
    Dans la fonction main() j'ai regardé le contenu du tableau names et donc lorsque j'exécute la sortie me donne
    tarzan
    tarzan
    tarzan
    tarzan


    et donc je ne comprend pas comment faire pour arriver à mettre les notes de chaque élève dans des tableaux différents...
    voilà, si quelqu'un pouvait m'éclaircir, j'en serai reconnaissant .

    Merci d'avance.

  2. #2
    Expert confirmé
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 766
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4 766
    Par défaut
    Je vois 2 façons de faire

    Façon 1 :
    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
    struct/ class Eleve {
    public:
     
        Eleve(std::wstring init_nom) : nom(init_nom) { clear(); }
     
     
    public:
     
        void clear() {
            liste_notes.clear();
        }
     
     
    //  À toi de voir
     
     
    public: // or private
     
        std::wstring nom; // or std::string
     
        std::vector<float> liste_notes;
    };


    Façon 2 : (Les notes d'un étudiant doivent être contiguës)
    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
    struct/ class Liste_Notes {
    public:
     
        Liste_Notes() { clear(); }
     
     
    public:
     
        void clear() {
            liste_notes.clear();
            liste_eleves.clear();
        }
     
     
    //  À toi de voir
     
        void add_note(float note, std::wstring nom_eleve);
     
     
    private:
     
        struct Eleve {
        public:
     
            Eleve(std::wstring init_nom, unsigned short init_first_index)  : nom(init_nom), first_index(init_first_index), nb_notes(0)  {}
     
        public:
     
            void operator= (const Eleve& other) {
                nom = other.nom;
                first_index = other.first_index;
            }
     
        public:
     
            std::wstring nom; // or std::string
     
            unsigned short first_index;
            unsigned short nb_notes;
        }
     
     
    public: // or private
     
     
        std::vector<float> liste_notes;
     
        std::vector<Liste_Notes::Eleve> liste_eleves;
    };

    ... ou utiliser un multimap ou une base de données

  3. #3
    Expert confirmé
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Décembre 2015
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Décembre 2015
    Messages : 1 599
    Par défaut
    Bonjour,

    Les 2 while font un peu la même chose, le code doit chercher le 1er nom et lui affecter toutes les notes.
    Il faut passer en debug ou bien afficher les données chargées après chaque étape.
    En gros,
    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
    //for (int i=0 ; i<4 ; i++)
      while ( getline(inFile,name) ) //on récupère le nom de l'élève
      {
         names.push_back(name); //on ajoute ce nom dans le tableau
         inFile>>nombreDeNotes; //on lit le nombre de note à lire
     
         //int j=0;
         //while(j<nombreDenotes)
         for ( int j = 0 ; j < nombreDeNotes ; ++j )
         {
             inFile>>noteBis; //on lit la j-eme note de l'élève
             notes.push_back(noteBis); //que l'on ajoute dans un tableau
          }
          marks.push_back(notes); //on ajoute ces tableaux de notes dans un tableau
       }

  4. #4
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2015
    Messages : 3
    Par défaut
    Merci beaucoup, c'est exactement ce que j'attendais.

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

Discussions similaires

  1. Différents type de dimensions dans un tableau
    Par deniooo dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 04/07/2008, 15h48
  2. perte d'éléments dans un tableau dans $_SESSION
    Par jibouze dans le forum Langage
    Réponses: 10
    Dernier message: 15/11/2005, 17h01
  3. Compter le nombre d'élément dans un tableau
    Par cryptorchild dans le forum Langage
    Réponses: 6
    Dernier message: 08/07/2005, 13h01
  4. [HTML/CSS]désigner un élément dans un tableau de l'extérieur
    Par FrankOVD dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 28/06/2005, 21h55
  5. Réponses: 4
    Dernier message: 10/10/2003, 18h04

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