diff --git a/srcs/part4.c b/srcs/part4.c new file mode 100644 index 0000000..a39a07f --- /dev/null +++ b/srcs/part4.c @@ -0,0 +1,61 @@ +#include "../includes/structure.h" + +#define MAX_TACHES 100 + +void calculerDatesDebut() +{ + int file[MAX_TACHES]; + int dateActuelle; + int indiceSucc; + int indeTache; + int deb; + int fin; + int i; + int j; + + initialiserFile(file, &deb, &fin); + + for (i = 0; i < nbTaches; i++) + if (tableauTaches[i].nbPred == 0) + enfiler(file, &fin, i); + + dateActuelle = 0; + while (!estVide(deb, fin)) + { + indiceTache = defiler(file, &deb); + Tache *t = &tableauTaches[indiceTache]; + + t->dateDebut = dateActuelle; + t->traite = true; + + for (j = 0; j < t->nbSucc; j++) + { + indiceSucc = t->successeurs[j]; + Tache *succ = &tableauTaches[indiceSucc]; + if (succ->dateDebut > dateActuelle + t->duree) + succ->dateDebut = succ->dateDebut; + else + succ->dateDebut = dateActuelle + t->duree; + succ->nbPred--; + + if (succ->nbPred == 0) + enfiler(file, &fin, indiceSucc); + } + + dateActuelle = INT_MAX; + for (i = 0; i < nbTaches; i++) + if (!tableauTaches[i].traite && tableauTaches[i].dateDebut < dateActuelle) + dateActuelle = tableauTaches[i].dateDebut; + } + + for (i = 0; i < nbTaches; i++) + if (!tableauTaches[i].traite) + printf("Toutes les taches n'ont pas ete executees\n"); + exit(1); +} + +int main() +{ + return (0); +} +