From 5fa331db4f42585a9d24cf3d4b2796d599df5b0f Mon Sep 17 00:00:00 2001 From: jopierron Date: Tue, 29 Mar 2022 19:20:02 +0000 Subject: [PATCH] Update Contact.cpp --- src/Contact.cpp | 37 ++++++++++++++++++++++++++++--------- 1 file changed, 28 insertions(+), 9 deletions(-) diff --git a/src/Contact.cpp b/src/Contact.cpp index 1f00804..3752029 100644 --- a/src/Contact.cpp +++ b/src/Contact.cpp @@ -7,12 +7,16 @@ using namespace std; using namespace reseau; Contact::Contact(const Personne& Proprietaire): Proprietaire{Proprietaire} { - // cout << "Contact créé " << Proprietaire << "\n"; + cout << "Contact créé " << Proprietaire << "\n"; +} + +const Personne& Contact::getProprio() const { + return this->Proprietaire; } bool Contact::ajouterContact(const Personne& unContact){ if(lesContacts.empty()){ - // cout << "Contact ajouté " << unContact <<"\n"; + cout << "Contact ajouté " << unContact <<"\n"; lesContacts.push_back(&unContact); return true; } @@ -27,7 +31,7 @@ bool Contact::ajouterContact(const Personne& unContact){ return false; } else { - // cout << "Contact ajouté " << unContact <<"\n"; + cout << "Contact ajouté " << unContact <<"\n"; lesContacts.push_back(&unContact); return true; } @@ -63,7 +67,7 @@ bool Contact::supprimerContact(const Personne& unContact){ } void Contact::afficherContactDirect() { - cout << lesContacts.size() << " Les contacts directs de " << this->Proprietaire << " sont : "; + cout << " Les contacts directs de " << this->Proprietaire << " sont : "; for(list::const_iterator it = lesContacts.cbegin(); it != lesContacts.cend(); ++it){ if(it==lesContacts.cbegin()) cout << **it; @@ -73,11 +77,26 @@ void Contact::afficherContactDirect() { cout << "\n"; } -void Contact::afficherContactIndirect() { - cout << lesContacts.size() << " Les contacts directs et indirects de " << this->Proprietaire << " sont : "; - if(lesContacts.size()==0) - cout << " Aucun contact "; - cout << "\n"; +void Contact::Recursive(list Contacts, set* set) { + for(auto Personne : lesContacts) { + if(set->find(Personne)!=set->end()) + continue; + set->insert(Personne); + for(Contact* contact : Contacts) { + if(*Personne == contact->getProprio()) { + contact->Recursive(Contacts,set); + } + } + } +} + +void Contact::afficherContactIndirect(list Contacts) { + cout << " Les contacts directs et indirects de " << this->Proprietaire << " sont : "; + set lesPersonnes{}; + Recursive(Contacts,&lesPersonnes); + for(auto& Personne : lesPersonnes) + cout << *Personne << ", "; + cout << "\n"; } ostream& reseau::operator<<(ostream& os, Personne p){