This repository has been archived on 2023-10-29. You can view files and clone it, but cannot push or open issues or pull requests.
GestionProjet/src/ProtoProjet.cpp

63 lines
1.5 KiB
C++
Raw Normal View History

2023-10-19 23:05:11 +02:00
#include "../includes/ProtoProjet.hpp"
2023-10-27 18:01:17 +02:00
ProtoProjet::ProtoProjet() {}
2023-10-19 23:05:11 +02:00
ProtoProjet::~ProtoProjet() {}
2023-10-28 02:09:10 +02:00
ProtoProjet::ProtoProjet(const ProtoProjet &src) : Projet(src) {}
2023-10-19 23:05:11 +02:00
const ProtoProjet &ProtoProjet::operator=(const ProtoProjet &src) {
if (this == &src) {
return *this;
}
return *this;
}
2023-10-26 19:08:00 +02:00
2023-10-28 00:10:54 +02:00
std::ostream &operator<<(std::ostream &out, const ProtoProjet &data) {
2023-10-28 02:59:00 +02:00
return data.print(out);
2023-10-28 00:10:54 +02:00
}
2023-10-27 23:27:41 +02:00
void ProtoProjet::cleanMarks() const {
2023-10-27 21:40:27 +02:00
for (auto t : taches) {
t->visite = false;
}
2023-10-27 18:01:17 +02:00
};
2023-10-27 23:27:41 +02:00
bool ProtoProjet::ajoute(const std::string nom, const int duree) {
// Sélection de 2 tâches au hasard
auto tasks = pick_two_random_tasks();
// Ajout des tâches
return ajoute(nom, duree, tasks.first, tasks.second);
}
bool ProtoProjet::ajoute(const std::string nom, const int duree, const int id) {
// Ajout de la tâche entre l'ID voulu et la tâche finale
return ajoute(nom, duree, id, fin->unique_id);
}
bool ProtoProjet::ajoute(const std::string nom, const int duree, const int id1,
const int id2) {
Tache *tache1 = contains(id1);
Tache *tache2 = contains(id2);
// Vérifie que les tâches avec les id1 et id2 existent bien dans la liste
if (!tache1 || !tache2) {
return false;
}
// Création des dépendances
Tache *tache = new Tache(nom, duree);
2023-10-28 01:34:58 +02:00
if (!tache1->ajouteDependance(*tache) && !tache->ajouteDependance(*tache2)) {
2023-10-27 23:27:41 +02:00
// Problème de dépendance
delete tache;
return false;
}
// Mise à jour du vecteur avec tri topologique
taches.push_back(tache);
2023-10-28 01:34:58 +02:00
topologicalSort();
2023-10-27 23:27:41 +02:00
return true;
}