/** \brief Ce fichier doit contenir l'ensemble des implmentations relatives la classe vecteur et aux fonctionnalits la concernant */ #include "Vecteur.h" #include #include #include using std::cout; using std::cin; /** * \brief Constructeur créant un vecteur de nDim dimensions avec toutes les coordonnées à val * \param nDim : nombre de dimensions * \param val : valeur à affecter à toutes les coordonnées * */ Vecteur::Vecteur(unsigned int nDim , float val):coordonnees(new float[nDim]),dimension(nDim){ for (unsigned int i = 0; i < nDim; ++i) { coordonnees[i] = val; } cout << "Vecteur à " << nDim << " dimension(s) initalisé à "<< val << "créé."; } /** * \brief Constructeur de copie : Crée une copie de l'objet passé en paramètre * */ Vecteur::Vecteur(const Vecteur & v):coordonnees(new float[v.dimensions()]),dimension(v.dimensions()){ for (unsigned int i = 0; i < dimension; ++i) { coordonnees[i] = v.get(i); } } /** * \brief Destructeur * */ Vecteur::~Vecteur() { delete [] coordonnees; } /** * \brief Méthode permettant d'obtenir la valeur d'une coordonnée * \param ind : indice de la dimension dans laquelle on souhaite obtenir la coordonnée * \return : valeur de la coordonnée * */ float Vecteur::get(unsigned int ind) const { assert (ind < dimension); return coordonnees[ind]; } /** * \brief Méthode permettant de modifier la valeur d'une coordonnée * \param ind : indice de la dimension dans laquelle on souhaite modifier la coordonnée * \return : valeur de la coordonnée * */ void Vecteur::set(unsigned int ind, float val) { assert (ind < dimension); coordonnees[ind] = val; } /** * \brief Méthode permettant de connaitre le nombre de dimensions du vecteur * \return : Nombre de dimensions du Vecteur * */ unsigned int Vecteur::dimensions() const { return dimension; } /** * \brief Fonction permettant l'affichage d'un vecteur * \param v : pointeur vers le vecteur à afficher * */ void afficherVecteur(const Vecteur * v){ unsigned int v_dim = v->dimensions(); cout << "( "; for (unsigned int i = 0;i < v_dim; ++i){ cout << v->get(i) << " "; } cout << ")"; } /** * \brief Fonction initialisant un vecteur avec des caractéristiques fournies par l'utilisateur * \return : pointeur vers le Vecteur initialisé */ Vecteur * lireVecteur(){ unsigned int v_dim; float v_val; cout << "Dimension du vecteur : "; cin >> v_dim; Vecteur * v = new Vecteur(v_dim,0.0); for (unsigned int i = 0; i < v_dim; ++i) { cout << '\n' << "Coordonnées dans la dimension " << i <<" :"; cin >> v_val; v->set(i,v_val); } return v; } /** * \brief Fonction permettant d'ajouter 2 vecteurs * \param v1 : premier vecteur * \param v2 : second vecteur à ajouter au premier * \return : nouveau vecteur contenant la somme de v1 et v2 * */ Vecteur add(const Vecteur * v1, const Vecteur * v2){ unsigned int v_dim = v1->dimensions() > v2->dimensions() ? v1->dimensions() : v2->dimensions(); float v_sum; Vecteur v = * new Vecteur(v_dim,0.0); for(unsigned int i=0;i < v_dim; ++i) { v_sum = i >= v1->dimensions() ? 0 : v1->get(i); v_sum += i >= v2->dimensions() ? 0 : v2->get(i); v.set(i, v_sum); } return v; }