Énoncé
Écrire une classe Vecteur permettant de représenter et manipuler
des vecteurs à composantes réelles de
taille maximum fixée à l'initialisation de chaque vecteur, et offrant les
services suivants (nous supposons que v est un vecteur quelconque
de taille n):
- il doit être possible d'initialiser toutes les composantes d'un
vecteur avec une même valeur x lors de sa définition.
- si a est un réel, alors v+a est
un vecteur w de taille n tel que chacune de ses composantes wi = vi+a.
- si u est un vecteur de même taille n, alors v+u est
un vecteur w de taille n tel que wi = vi+ui. De même, v==u
est vrai si leurs composantes sont égales 2 à 2 (vi == ui).
- si i est l'indice d'une composante possible pour v, alors v[i]
désigne la composante vi ; cette composante doit être accessible aussi
bien en lecture (au sein d'une expression) qu'en écriture (partie gauche
d'un opérateur d'affectation).
- si c est une valeur de type ostream (canal de sortie), alors
il doit être possible de sortir v sur c en écrivant c << v.
- si v est une variable de type Vecteur et c une valeur
de type istream (canal d'entrée), alors
il doit être possible d'entrer toutes les composantes de v à partir
de c en écrivant c >> v.
Tester alors le petit programme suivant:
void testAffectation () {
Vecteur v1(10), v2(10);
cout << "saisie des 10 composantes de v1 : "; cin >> v1;
v2 = v1;
cout << "v1 = " << v1 << ", v2 = " << v2 << endl;
v1[2] = -1.0;
cout << "Apres modification de v1[2], nous avons :" << endl;
cout << "v1 = " << v1 << ", v2 = " << v2 << endl; };
Que s'est-il passé ? Expliquer le problème, puis faire le nécessaire
afin de remédier au problème ; tester alors:
void fonc(Vecteur v) { v[3] = -1.0; cout << "v = " << v << endl; };
void testPassageParValeur () {
Vecteur v1(10);
cout << "saisie des 10 composantes de v1 : "; cin >> v1;
cout << "v1 = " << v1 << ", ";
fonc(v1);
cout << "Apres appel de fonc(v1), nous avons v1 = " << v1 << endl; };
Que s'est-il passé ? Expliquer le problème, puis faire le nécessaire
afin de remédier au problème.
Solution