From cf6427234899744380e2f7d6d99b4e49be035017 Mon Sep 17 00:00:00 2001 From: jopierron Date: Fri, 1 Apr 2022 08:07:19 +0000 Subject: [PATCH] Upload New File --- src/Personne3.cpp | 54 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 src/Personne3.cpp diff --git a/src/Personne3.cpp b/src/Personne3.cpp new file mode 100644 index 0000000..596f0ea --- /dev/null +++ b/src/Personne3.cpp @@ -0,0 +1,54 @@ +#include "Personne3.hpp" +#include "Contact3.hpp" + +#include +#include +#include + +using namespace std; +using namespace reseau2; + +// #define TECHNIQUE_A + +Personne::Personne(const std::string& prenom):prenom{prenom}{ +// #ifdef TECHNIQUE_A + contacts = new ListeContact{}; +// #else +// contacts = new Conteneur{}; +// #endif +} + +const string& Personne::getPrenom() const{ + return this->prenom; +} + +void reseau2::Personne::ajtContact(const Personne &personne) { + this->contacts->ajtContact(personne); +} + +Personne::~Personne() { + delete contacts; +} + +bool Personne::peutCommuniquerA(const Personne &p) const { + unordered_set visited; + queue pile; + pile.push(this); + while (!pile.empty()) { + const Personne* front = pile.front(); + pile.pop(); + for (const Personne* perso : front->contacts->getValue()) { + if (perso == &p) { + cout << this->prenom << " peut communiquer avec " << p.getPrenom() << "\n"; + return true; + } + else if (visited.find(perso) == visited.end()) { + pile.push(perso); + visited.insert(perso); + } + } + } + cout << this->prenom << " ne peut pas communiquer avec " << p.getPrenom() << "\n"; + return false; +} +