diff --git a/SAE2 b/SAE2 index 2dc0b25..26dd657 100755 Binary files a/SAE2 and b/SAE2 differ diff --git a/obj/charge.o b/obj/charge.o index 145c5da..821b33e 100644 Binary files a/obj/charge.o and b/obj/charge.o differ diff --git a/obj/main.o b/obj/main.o index ae18945..e28bd2a 100644 Binary files a/obj/main.o and b/obj/main.o differ diff --git a/obj/part4.o b/obj/part4.o index 006357d..71617b3 100644 Binary files a/obj/part4.o and b/obj/part4.o differ diff --git a/obj/structures.o b/obj/structures.o index 1d564cc..94932a4 100644 Binary files a/obj/structures.o and b/obj/structures.o differ diff --git a/srcs/charge.c b/srcs/charge.c index 033acba..5b7a3ec 100644 --- a/srcs/charge.c +++ b/srcs/charge.c @@ -108,7 +108,6 @@ Offre **loadOffre(void) /*--------------precedences--------------*/ - // Chargement des précédences depuis un fichier Precedence *loadPrec(int *tmax, int *tlog) { @@ -160,8 +159,6 @@ Precedence *loadPrec(int *tmax, int *tlog) return tabP; } -//--------------------------------------------------------------------------- - // Chargement des tâches depuis un fichier pour chaque offre Tache **loadTaches(Offre *tabTravaux[]) { diff --git a/srcs/main.c b/srcs/main.c index f9ac5b8..b1e80bd 100644 --- a/srcs/main.c +++ b/srcs/main.c @@ -4,6 +4,7 @@ int main() { Precedence *tabP; Offre **tabTravaux; + Tache **tabTaches; int p_tmax; int p_tlog; @@ -15,7 +16,9 @@ int main() displayPrecedences(tabP, p_tlog); - loadTaches(tabTravaux); + tabTaches = loadTaches(tabTravaux); + + traiterTaches(tabTaches); return 0; } diff --git a/srcs/part4.c b/srcs/part4.c index 6bdcb75..8c0ca9a 100644 --- a/srcs/part4.c +++ b/srcs/part4.c @@ -1,5 +1,32 @@ #include "../includes/main.h" +void afficherDetailsTache(Tache *tache) +{ + if (tache != NULL) + { + printf("Nom de la tâche: %s\n", tache->tache); + printf("Durée: %d\n", tache->duree); + printf("Nombre de prédécesseurs: %d\n", tache->nbPred); + printf("Date de début: %d\n", tache->dateDebut); + printf("Traité: %s\n", (tache->traite == true) ? "Oui" : "Non"); + + // Afficher les successeurs si nécessaire + MaillonSucc *succCourant = tache->succ; + printf("Successeurs: "); + while (succCourant != NULL) + { + printf("%s ", succCourant->tache); + succCourant = succCourant->nxt; + } + printf("\n\n"); + } + else + { + printf("La tâche est NULL.\n"); + } +} + + void traiterTaches(Tache *tabTache[]) { ListeAttente file; @@ -19,11 +46,19 @@ void traiterTaches(Tache *tabTache[]) while (succCourant) { Tache *successeur = trouverTache(tabTache, TMAXTRAV, succCourant->tache); - successeur->dateDebut = max(successeur->dateDebut, tacheActuelle->dateDebut + tacheActuelle->duree); - successeur->nbPred--; - if (successeur->nbPred == 0) - enfiler(&file, successeur); + + if (successeur != NULL) + { + successeur->dateDebut = max(successeur->dateDebut, tacheActuelle->dateDebut + tacheActuelle->duree); + successeur->nbPred--; + + if (successeur->nbPred == 0) + enfiler(&file, successeur); + } + succCourant = succCourant->nxt; } + afficherDetailsTache(tacheActuelle); } } + diff --git a/srcs/structures.c b/srcs/structures.c index 16061c3..4b8b5ee 100644 --- a/srcs/structures.c +++ b/srcs/structures.c @@ -253,6 +253,9 @@ Tache* trouverTache(Tache **tabTache, int nbTaches, char *nom) { int i; + if (tabTache == NULL || nom == NULL) + return NULL; + for (i = 0; i < nbTaches; i++) if (strcmp(tabTache[i]->tache, nom) == 0) return tabTache[i];