bonjour,
je suis débutant mais de chez débutant en c++.
voila je suis entrain de réaliser un Modèle de base de la classe CNotes.
Mon but de ce programme est de m'afficher ceci:
math : 2 notes, moy. = 11
physique : 3 notes, moy. = 10
anglais : 3 notes, moy. = 13
francais : 3 notes, moy. = 8.66667

voici mes codes:
Cnotes.cpp
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
 
#include "cnotes.h"
CNotes::~CNotes()
{
      pElem p = prem ;
      while ( prem != NULL ) {
            p = p->suiv ; delete prem ; prem = p ;
      }
      prem = dern = NULL ;
      nbElem = 0 ;
}
void CNotes::Ajoute(double v )
{
      pElem p = new CElem ; //pointeur de maillon
      p->note = v ; p->suiv = NULL ;
      if ( prem == NULL )     prem = dern = p ;
      else {
            dern->suiv = p ; dern = dern->suiv ;
      }
      nbElem++ ;
}
 
double CNotes::Moyenne() const
{
        int i;
        pElem p = prem;
        double total;
        for (i = 0; i < nbNotes() ;i++){
                total += p ->note;
                p = p -> suiv;
 
        }
        return total/nbElem ;
}
Cnotes.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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
 
#ifndef CNOTES_H
#define CNOTES_H
#include <iostream>
#include <string>
 
 
using namespace std ;            
 
class CElem ;
 
typedef CElem* pElem ;
class CElem {
  public :
      double note ;
      pElem suiv ;
} ;
class CNotes {
      pElem prem , dern ;
      int         nbElem ;
  public :
      CNotes(double n = -1 )
            : prem(NULL) , dern(NULL) , nbElem(0) {
            if ( n != -1 )    Ajoute(n) ;
      }
      ~CNotes() ;
      int nbNotes() const { return nbElem ; }
      void Ajoute(double v ) ;
      double Moyenne() const ;
      CNotes& operator += (double c) {
 
		Ajoute(c);
 
		return *this;
 
	}
      CNotes& operator [] (int T){
 
 
      }
 
} ;
#endif
main.cpp
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
 
#include <iostream>
#include <string>
#include "cnotes.h"
void affiche(const string& m, const CNotes& c )
{
      cout << m << " : " << c.nbNotes() << " note" ;
      if ( c.nbNotes() > 1 ) cout << 's' ;
      cout << ", moy. = " << c.Moyenne() << endl ;
}
int main(void)
{
      CNotes math ;                     // constructeur par défaut
      CNotes physique(7) ;             // constructeur avec argument
      CNotes francais(12) ;
      CNotes anglais ;
 
      math.Ajoute(12) ;                // méthode Ajoute()
      math.Ajoute(10) ;
      physique += 13 ;                 // opérateur += avec arg. double
      physique += 10 ;
      anglais[0] = 11 ;                // opérateur d'accès direct []
      anglais[1] = 15 ;
      anglais = anglais + 13 ;         // opérateur + avec arg. double
                                              // op. = sur même objet CNotes
      francais[2] = 14 ;               // devoir d'indice 1 non rendu !
 
      affiche("math     ", math ) ;
      affiche("physique", physique ) ;
      affiche("anglais ", anglais ) ;
      affiche("francais", francais ) ;
}
mon problème c'est que je ne c'est pas comment faire pour Surcharger l'opérateur [ ] de manière à proposer un accès direct en lecture et en écriture sur une
note de la liste. Si l'indice demandé est incorrect, la méthode doit créer les maillons manquants avec des notes nulles... .

bonne journée a vous