total duration done!!

This commit is contained in:
Mylloon 2023-10-28 04:06:37 +02:00
parent 929187436b
commit f4782634ce
Signed by: Anri
GPG key ID: A82D63DFF8D1317F
6 changed files with 26 additions and 13 deletions

View file

@ -48,11 +48,12 @@ protected:
Tache *contains(const int id) const; Tache *contains(const int id) const;
Tache *contains(const std::string name) const; Tache *contains(const std::string name) const;
// Donne une version du vecteur de tâches non modifiable
const std::vector<const Tache *> consult_tasks() const;
// Corrige les éventuelles anomalies du vector de tâches // Corrige les éventuelles anomalies du vector de tâches
void topologicalSort(); void topologicalSort();
public:
// Donne une version du vecteur de tâches non modifiable
const std::vector<const Tache *> consult_tasks() const;
}; };
#endif #endif

View file

@ -3,8 +3,13 @@
#include "ProtoProjet.hpp" #include "ProtoProjet.hpp"
class RunProjet final : private ProtoProjet { struct Consultant;
struct Expert;
class RunProjet final : protected ProtoProjet {
friend std::ostream &operator<<(std::ostream &, const RunProjet &); friend std::ostream &operator<<(std::ostream &, const RunProjet &);
friend Consultant;
friend Expert;
public: public:
RunProjet() = delete; // remove default constructor RunProjet() = delete; // remove default constructor

View file

@ -12,8 +12,6 @@ class Tache final {
enum Etat { EnAttente, Realisee }; enum Etat { EnAttente, Realisee };
friend std::ostream &operator<<(std::ostream &, const Etat &); friend std::ostream &operator<<(std::ostream &, const Etat &);
// Durée totale pour faire la tâche
int duree_total;
// Etat actuelle de la tâche // Etat actuelle de la tâche
enum Etat etat; enum Etat etat;
// Liste des dépendances // Liste des dépendances
@ -29,6 +27,8 @@ public:
const int unique_id; const int unique_id;
// Nom de la tâche // Nom de la tâche
std::string name; std::string name;
// Durée totale pour faire la tâche
int duree_total;
// Vrai si la tâche à été visitée par le parcours en profondeur // Vrai si la tâche à été visitée par le parcours en profondeur
bool visite; bool visite;

View file

@ -16,5 +16,10 @@ const Consultant &Consultant::operator=(const Consultant &src) {
std::pair<std::vector<int>, int> Consultant::avis(const RunProjet &projet) { std::pair<std::vector<int>, int> Consultant::avis(const RunProjet &projet) {
// TODO // TODO
return std::make_pair(std::vector<int>(), 0); int duree_totale = 0;
for (const Tache *it : projet.consult_tasks()) {
duree_totale += it->duree_total;
}
return std::make_pair(std::vector<int>(), duree_totale);
} }

View file

@ -16,5 +16,7 @@ const Expert &Expert::operator=(const Expert &src) {
std::pair<std::vector<int>, int> Expert::avis(const RunProjet &projet) { std::pair<std::vector<int>, int> Expert::avis(const RunProjet &projet) {
// TODO // TODO
return std::make_pair(std::vector<int>(), 0); const int duree_totale = projet.consult_tasks().front()->dureeParal();
return std::make_pair(std::vector<int>(), duree_totale);
} }

View file

@ -3,8 +3,8 @@
int Tache::counter_id = 0; int Tache::counter_id = 0;
Tache::Tache(const std::string n, const int duree) Tache::Tache(const std::string n, const int duree)
: duree_total(duree), etat(EnAttente), dependances(std::vector<Tache *>()), : etat(EnAttente), dependances(std::vector<Tache *>()),
unique_id(counter_id++), name(n), visite(false) {} unique_id(counter_id++), name(n), duree_total(duree), visite(false) {}
Tache::~Tache() {} Tache::~Tache() {}
@ -17,8 +17,8 @@ void Tache::_copy(const Tache &src) {
} }
Tache::Tache(const Tache &src) Tache::Tache(const Tache &src)
: duree_total(src.duree_total), etat(src.etat), unique_id(counter_id++), : etat(src.etat), unique_id(counter_id++), name(src.name),
name(src.name), visite(src.visite) { duree_total(src.duree_total), visite(src.visite) {
_copy(src); _copy(src);
} }
@ -26,9 +26,9 @@ const Tache &Tache::operator=(const Tache &src) {
if (this == &src) { if (this == &src) {
return *this; return *this;
} }
duree_total = src.duree_total;
etat = src.etat; etat = src.etat;
name = src.name; name = src.name;
duree_total = src.duree_total;
visite = src.visite; visite = src.visite;
_copy(src); _copy(src);
return *this; return *this;