Problème de tabeau dans un code orienté objet

Guiiil Messages postés 13 Date d'inscription jeudi 10 janvier 2008 Statut Membre Dernière intervention 10 juin 2009 - 2 nov. 2008 à 22:21
Guiiil Messages postés 13 Date d'inscription jeudi 10 janvier 2008 Statut Membre Dernière intervention 10 juin 2009 - 4 nov. 2008 à 23:23
Bonsoir, je débute actuellement en C++ orienté objet et je suis bloqué avec ce programme qui doit réaliser un tableau d'élèves, prendre leur moyenne et faire la moyenne de tous cela!

J'ai déjà réalisé le programme suivant :




#include "stdafx.h"
#include <stdio.h>
#include
#include <string>
using namespace std;

class Eleve
{
private :
    string nom;
    float note;
public :
    void init(string pnom, float pnote);  //initialisation
    string getNom();                    //retourne le nom de l'élève
    float getNote();                        //retourne la note de l'élève
};

class TabEleves
{
    private :
        Eleve ele[36];                        //les élèves mémorisés
        int nb;                                //nombre d'élèves mémorisés
    public :
        void init();                        //initialisation
        int getNb();                        //retourne le nombre d'élèves mémorisés
        void ajouter(Eleve ele);            //ajoute un élève dans le tableau
        Eleve valeur(int i);                //retourne l'élève mémorisé à l'indice i
        void supprimer(int i);                //supprime l'élève mémorisé à l'indice i fin classe
};

void saisirEleve(Eleve & eleve); // prototypage de la procédure
void resultats(Eleve ele[36]);

void Eleve::init(string pnom, float pnote)
{
    nom = pnom;
    note = pnote;
}

string Eleve::getNom()
{
    return nom;
}

float Eleve::getNote()
{
    return note;
}

void TabEleves::init()
{    
    nb = 0;
    int i;
    Eleve elacon;
    elacon.init("",0);    
    for (i = 0; i < 35; i++)
    {
        ele[i] = elacon;
    }
}

int TabEleves::getNb()
{
    return nb;
}

void TabEleves::ajouter(Eleve eleve)
{
     ele[nb] = eleve;
     nb++;
}

Eleve TabEleves::valeur(int i)
{
    return ele[i];
}

void TabEleves::supprimer(int i)
{
    //ele[i] = 0;
}

void saisirEleve(Eleve & eleve) // Implementation de la procedure.
{
    string pnom;
    float pnote;
    cout << "veuillez saisir le nom de l'élève" << endl;
     cin >> pnom;
    cout << endl << "veuillez saisir la note de l'élève" << endl;
    cin >> pnote;
    cout << endl;
    eleve.init(pnom, pnote);
}

void resultats(TabEleves tabele)
{
    float notelaplusbasse = 0;
    float notelaplushaute = 0;
    string nomdufaible;
    string nomdufort;
    float moyenne = 0;
    int j = 0;
    int i;

    for (i=0; i < 35; i++)
    {
        Eleve tabEle1 = tabele.valeur(i);
        float note1 = tabEle1.getNote();

        if (note1 < notelaplusbasse)
        {

            notelaplusbasse = note1;
            nomdufaible = tabEle1.getNom();
        }
        if (note1 > notelaplushaute )
        {
            notelaplushaute = note1;
            nomdufort = tabEle1.getNom();
        }
        moyenne = note1 + moyenne;
        j++;
    }
    moyenne = moyenne / j;
    cout << "Elève le plus nul    :" << notelaplusbasse << " : " << nomdufaible << endl;
    cout << "Elève le plus fort   :" << notelaplushaute << " : " << nomdufort << endl;
    cout << "Moyenne de la classe :" << moyenne << endl;
}

void main (void)
{
    Eleve eleve;
    TabEleves tabele;
    saisirEleve(eleve);
    tabele.ajouter(eleve);
    resultats(tabele);
    system("pause");
}

Le problème, après recherche, se situe au niveau de cette partie du code (je pense) :


void TabEleves::ajouter(Eleve eleve)

{

     ele[nb] = eleve;

     nb++;

}





J'ai tenté quelques modifications, mais rien n'y fait, la boucle ne veut pas se mettre en route...

Pourrais-je, s'il vous plait, avoir votre avis sur la question?

2 réponses

cs_Lucky92 Messages postés 180 Date d'inscription mercredi 22 décembre 2004 Statut Membre Dernière intervention 16 août 2012 2
3 nov. 2008 à 08:27
Tu dois initialiser nb dans le constructeur.
0
Guiiil Messages postés 13 Date d'inscription jeudi 10 janvier 2008 Statut Membre Dernière intervention 10 juin 2009
4 nov. 2008 à 23:23
C'est bon, ça a fini par marché, merci beaucoup pour le conseil ^^.
0