diff options
author | Benjamin Chausse <benjamin@chausse.xyz> | 2023-01-12 23:40:59 -0500 |
---|---|---|
committer | Benjamin Chausse <benjamin@chausse.xyz> | 2023-01-12 23:40:59 -0500 |
commit | b4f16386c70bfeab700e7cc129f2f04295aa0059 (patch) | |
tree | 8211e50bdf4f22eed2d2f2a19166e3a6f4ae5155 /vecteur.cpp | |
parent | 0ef3e40f726f35b86d79426104234d815cea2bb9 (diff) |
vecteur est fomrmes sont finis
Diffstat (limited to 'vecteur.cpp')
-rw-r--r-- | vecteur.cpp | 70 |
1 files changed, 70 insertions, 0 deletions
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; +} |