Exercice langage C: Gérer les étudiants d’une institution à l’aide d’une classe Etudiant

1/ On voudrait gérer les étudiants d’une institution à l’aide d’une classe Etudiant définie par :

les attributs suivants :

- nom : nom d’un étudiant

- prénom: prénom d’un étudiant

- tabnotes : tableau contenant les notes d’un étudiant, sachant qu’un étudiant a au total 10 notes.

les méthodes suivantes :

- void saisie (), permettant la saisie d’un étudiant

- void affichage (), permettant l’affichage d’un étudiant

- float moyenne (), retourne comme résultat la moyenne des notes d’un étudiant.

- int admis (), retourne comme résultat la valeur 1, si un étudiant est admis et la valeur 0, sinon. Un étudiant est considéré comme étant

admis lorsque la moyenne de ses notes est supérieure ou égale à 10.

- int exae_quo (Etudiant E), retourne comme résultat la valeur 1, si deux étudiants ont la même moyenne et la valeur 0, sinon.

Ecrire la classe Etudiant dans le langage C++.

2/ On voudrait maintenant représenter, à l’aide d’une nouvelle classe Etudiant_en_Maitrise, certains étudiants particuliers dans cette

institution qui sont les étudiants en dernière année d’études. Ces étudiants possèdent en effet un attribut supplémentaire : note_memoire,

qui représente la note de leur mémoire de fin d’études.

Les méthodes à associer à cette classe sont les suivantes :

- void saisie (), permettant la saisie d’un étudiant en maîtrise

- void affichage (), permettant l’affichage d’un étudiant en maîtrise

- float moyenne (), retourne comme résultat la moyenne des notes d’un étudiant en maîtrise

- int admis (), retourne comme résultat la valeur 1, si un étudiant est admis et la valeur 0, sinon. Un étudiant en maîtrise est considéré

comme étant admis lorsque, d’une part, la moyenne de ses notes est supérieure ou égale à 10 et d’autre part la note obtenue pour son mémoire

de fin d’études est supérieure ou égale à 10.

- int exae_quo (Etudiant_en_Maitrise E), retourne comme résultat la valeur 1, si deux étudiants ont d’une part la même moyenne et d’autre

part, la même note de mémoire et retourne la valeur 0, sinon.

a) Quelles sont les méthodes qui sont à redéfinir dans la classe Etudiant_en_Maitrise ?

b) Ecrire la classe Etudiant_en_Maitrise dans le langage C++.


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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
Découverte et travail des classes. Utilisation d'un constructeur et d'un destructeur.





1/

class Etudiant

{ private:

            char nom[50], prenom[50];

            float tabnotes[10] ;

  public :

            void saisie () ;

            void affichage () ;

            float moyenne() ;

            int admis() ;

            int exae_quo (Etudiant E) ;

} ;

void Etudiant ::saisie ()

{ int i ;

            cout << "Donner le nom :" ;

            cin >> nom ;

            cout << "Donner le prénom :" ;

            cin >> prenom ;

            cout << "Saisie des notes \n" ;

            for (i = 0 ; i < 10 ; i++)

            {

                        cout << "Donner la note N°" << i<< " : " ;

                        cin >> tabnotes[i] ;

            }

}

void Etudiant ::affichage ()

{ int i ;

            cout << "Le nom :"<<nom<< endl ;

            cout << "Le prénom :" <<prenom<< endl ;

            for (i = 0 ; i < 10 ; i++)

                        cout << "La note N°" << i << "est " << tabnotes[i]<< endl ;

}

float Etudiant ::moyenne()

{ int i ;

  float som = 0;

            for (i = 0 ; i < 10 ; i++)

                        som + = tabnotes[i] ;

            return (som/10)

}

int Etudiant ::admis()

{ if (moyenne() >= 10) return (1); else return (0);}

int Etudiant ::Exae_quo(Etudiant E)

{ if (moyenne() == E.moyenne()) return (1); else return (0);}

2/

a) Les méthodes qui sont à redéfinir dans la classe Etudiant_en_Maitrise sont : saisie, affichage, admis et esae_quo.

b)       

class Etudiant_en_Maitrise : public Etudiant

{ private:

            float note_memoire ;

  public :

            void saisie () ;

            void affichage () ;

            int admis() ;

            int exae_quo (Etudiant_en_Maitrise E) ;

} ;

void Etudiant_en_Maitrise ::saisie ()

{          Etudiant ::saisie () ;

cout << "Donner la note du mémoire :" ;

            cin >> note_memoire ;

}

void Etudiant_en_Maitrise ::affichage ()

{          Etudiant :: affichage () ;

cout << "La note du mémoire :" << note_memoire<< endl ;

}

int Etudiant_en_Maitrise ::admis()

{ if ((moyenne() >= 10) && (note_memoire >=10))return (1); else return (0);}

int Etudiant_en_Maitrise ::Exae_quo(Etudiant E)

{ if ((moyenne() == E.moyenne()) && (note_memoire == E.note_memoire)) return (1); else return (0);}