From b4f16386c70bfeab700e7cc129f2f04295aa0059 Mon Sep 17 00:00:00 2001 From: Benjamin Chausse Date: Thu, 12 Jan 2023 23:40:59 -0500 Subject: vecteur est fomrmes sont finis --- vecteur.cpp | 70 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 70 insertions(+) create mode 100644 vecteur.cpp (limited to 'vecteur.cpp') diff --git a/vecteur.cpp b/vecteur.cpp new file mode 100644 index 0000000..d9a560c --- /dev/null +++ b/vecteur.cpp @@ -0,0 +1,70 @@ +#include "vecteur.h" + +Vecteur::Vecteur(){ + capacite = 1; + taille = 0; + formes = new Forme*[capacite]; +} + +Vecteur::~Vecteur(){ + vider(); + delete[] formes; +} + +bool Vecteur::estVide(){ + return (taille == 0); +}; + +Forme *Vecteur::getForme(int index){ + return (index < 0 || index >= taille) ? NULL : formes[index]; +}; + +int Vecteur::getTaille(){ + return taille; +}; + +void Vecteur::afficher(ostream &s){ + for (int i = 0; i < taille; i++) { + formes[i]->afficher(s); + } +}; + +bool Vecteur::ajouterForme(Forme *f) { + if (taille == capacite) { + // Double the size of the array + int newCapacite = capacite * 2; + Forme **newFormes = new (nothrow) Forme*[newCapacite]; + if(newFormes==nullptr) return false; + for (int i = 0; i < taille; i++) { + newFormes[i] = formes[i]; + } + capacite = newCapacite; + delete[] formes; + formes = newFormes; + } + formes[taille] = f; + taille++; + return true; +}; + +Forme *Vecteur::supprimerForme(int index) { + Forme *f = formes[index]; + while (index < taille) { + formes[index] = formes[index + 1]; + index++; + } + formes[taille] = NULL; + taille--; + return f; +}; + +void Vecteur::vider() { + for (int i = 0; i < taille; i++) { + delete formes[i]; + } + capacite = 1; + taille = 0; + Forme **newFormes = new Forme*[capacite]; + delete[] formes; + formes = newFormes; +} -- cgit v1.2.3