Bonjour

pourriez vous corrigez mes reponses en cas d'erreur

Soit la classe suivante:
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
};
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
 
void ostream::operator <<(string s) 
{
  cout << s;
}
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
6
 
string:string(char* s)
{
	val = s;
	lng = s.length();
}
3 donnez le constructeur qui permet la declaration string s2 = s1
4 donnez l'operateur qui permet s2 = s1
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;
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
5
6
7
8
9
 
char c kiemeLettre(string s, int pos) 
{
	if(pos > s.lng) throw {}
	else 
       {
		return s[pos - 1];
	}
}
6 donnez l'operateur qui permet d'ecrire s1 += s2 (ajout de s2 a la fi n de s1)
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;
}
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
 
void operator +(string s1, string s2)
{ 
	s1[s1.lng - 1] = s2.val;
	s1.lng = s1.lng + s2.lng - 1;
}