Bonjour à tous,
Je vous contacte car j'ai un examen en C++ (à l'écrit) vendredi. J'ai une annale à laquelle j'ai répondu et je souhaiterais savoir si vous pourriez jeter un coup d’œil aux réponses que j'ai apporté.
Je vous joins l'annale et mes réponses:
Et voici mon code:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 class Client { string nom; string adresse; AgenceLocale& agenceLocale; public: Client(string n="",string a="", AgenceLocale& al):nom(n), adresse(a), agenceLocale(al){} AgenceLocale operator() {return agenceLocale->nom;} void afficher() {cout << nom << adresse << *agenceLocale;} } //1.4 - Oui, comm il y a un autre constructeur définit dans la classe, le compilateur n'en génère pas un par défaut.
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 class Employe { string nom; int id; AgenceLocale *agl; public: Employe(string ="", int i = 0):nom(n), id(i) {agl = new AgenceLocale();} virtual void afficher() {cout << nom << id << *agl;} virtual void calculerSalaire() = 0; } //2.4 Oui, car une classe abstraite est une classe qui possède au moins une fonction virtuelle pure. Elle n'est donc pas instanciable // car elle possède une fonction qui doit être surplantée. //2.5 Non, car on ne peut pas créer d'objet abstrait.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 class Commercial { float pourcentage; float fixe; public: Commercial(string n="", int i =0, float p=0.0, float f=0.0):Employer(n,i), pourcentage(p), fixe(f) {} public void calculerSalaire(float pourcentage, float fixe){?} }Les "?" présents dans mon code signifient que je ne sais pas répondre à la question.
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
50 class AgenceLocale { string nom; Region& nomR; int nbEmp; Employe * employe; list<Client> c; list<Vente> v; public: AgenceLocale(string n="", Region& r, int nb = 0):nom(n), nomR(r), nbEmp(nb) { employe = new Employe(); c = *new list<Client>(); v = *new list<Vente>(); } AgenceLocale(const AgenceLocale& copie) { nom = copie.nom; nomR = copie.nomR; nbEmp = copie.nbEmp; employe = copie.employe; employe = new Employe[copie.nbEmp]; for(int i = 0; i < nbEmp; i++) { employe[i] = copie.employe[i]; } c = copie.c; v = copie.v; } //4.2 Oui, car l'opérateur d'affection par défaut n'est pas suffisant si on utilise des pointeurs void addEmploye(string nom, int id) { Employe * e = new Employe(nom, id); employe[nbEmp] = *e; nbEmp++; } Vente AgenceLocale::operator[](int i) const { return v[i]; } ostream& operator<<(ostream& out, Client& c) { for(list<Clien*> ::iterator it=lclient.begin(); it != lclient.endl();++it) { out << it->c.nom << endl; } } public void calculerSalaire() { ??? } public void salaireCommerciaux() { ??? } }
Je vous remercie de votre aide![]()
Partager