summaryrefslogtreecommitdiff
path: root/vecteur.cpp
diff options
context:
space:
mode:
authorBenjamin Chausse <benjamin@chausse.xyz>2023-01-13 19:31:33 -0500
committerBenjamin Chausse <benjamin@chausse.xyz>2023-01-13 19:31:33 -0500
commit267868847b0885f60aaae43afd4f54ce028181d8 (patch)
tree1cce415f624760481f2f4cc49d42c65fbd857e55 /vecteur.cpp
parent82539db317b616b41b6e16629f19ddb4a49f6cc7 (diff)
parent86fbed0811fc4ef36ffb66b3f774df61eb87c24b (diff)
Merge branch 'development'
Diffstat (limited to 'vecteur.cpp')
-rw-r--r--vecteur.cpp74
1 files changed, 74 insertions, 0 deletions
diff --git a/vecteur.cpp b/vecteur.cpp
new file mode 100644
index 0000000..56b59ed
--- /dev/null
+++ b/vecteur.cpp
@@ -0,0 +1,74 @@
+#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;
+};
+
+int Vecteur::getCapacite(){
+ return capacite;
+};
+
+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;
+}