Bonjour
pourriez vous corrigez mes reponses en cas d'erreur
Soit la classe suivante:
1 donnez l'operateur qui permet d'afficher une chaine (par exemple cout << s1 << "\n")
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 class string { ... protected: char* val; // les caracteres de la chaine int lng; // sa longueur };
2 donnez le constructeur qui permet la declaration string s1 = "abcde"
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 void ostream::operator <<(string s) { cout << s; }
3 donnez le constructeur qui permet la declaration string s2 = s1
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 string:string(char* s) { val = s; lng = s.length(); }
4 donnez l'operateur qui permet s2 = s1
5 donnez l'operateur qui retourne le k-ieme caractere de la chaine (les caracteres sont indices a partir de 0), avec une exception si k est incorrect
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 string(string &s2, string s1)(s2.val(s1.val), s2.lng(s1.lng) {} if((s2.val == s1.val) || (s2.lng == s1.lng)) return true; else return false;
6 donnez l'operateur qui permet d'ecrire s1 += s2 (ajout de s2 a la fin de s1)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 char c kiemeLettre(string s, int pos) { if(pos > s.lng) throw {} else { return s[pos - 1]; } }
7 donnez l'operateur qui permet d'ecrire s1 + s2 (concatenation de 2 chaines)
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 void operator +=(string s1, string s2) { string s; s.lng = (s1.lng + s2.lng - 1); int i; for(i = 0 ; i < s1.lng ; i++) { s[i] = s1[i]; } for(i = s1.lng ; i < s.lng ; i++) { s[i] = s2[i - s1.lng]; } s[s.lng - 1] = "\o"; s1.val = s; }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 void operator +(string s1, string s2) { s1[s1.lng - 1] = s2.val; s1.lng = s1.lng + s2.lng - 1; }
Partager