From d82ec91d0510153881fbb994de3c0d95e9e1f096 Mon Sep 17 00:00:00 2001
From: Lou Davila <lou.davilapr@hes-so.ch>
Date: Wed, 9 Apr 2025 15:20:41 +0200
Subject: [PATCH] Updated code

---
 tp   | Bin 21368 -> 21328 bytes
 tp.c | 175 ++++++++++++++++++++++++++++++++++-------------------------
 2 files changed, 102 insertions(+), 73 deletions(-)

diff --git a/tp b/tp
index 71dc93f44ff8a634719c3edfc55ed4c9ad7a661c..11586c6855566ccba201f878ee9431e295a73610 100755
GIT binary patch
delta 3542
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

delta 3676
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
M7lbD@xzJZ00JPS@3jhEB

diff --git a/tp.c b/tp.c
index 9b9366a..b37678f 100644
--- a/tp.c
+++ b/tp.c
@@ -7,7 +7,8 @@
 
 #define CAMION_CAPACITE 4
 
-typedef struct {
+typedef struct 
+{
     sem_t velos;
     sem_t bornes;
     int velos_dispo;
@@ -15,29 +16,33 @@ typedef struct {
     pthread_mutex_t mutex;
 } Site;
 
-int SITES, HABITANTS, TRAJETS, BORNES;
+int SITES,HABITANTS,TRAJETS,BORNES;
 Site *sites;
 pthread_mutex_t mutex_trajets = PTHREAD_MUTEX_INITIALIZER;
 int trajets_effectues = 0;
 int velos_depot = 0;
 pthread_mutex_t mutex_velos_depot = PTHREAD_MUTEX_INITIALIZER;
 
-void *habitant(void *arg) {
-    int id = *(int *)arg;
-    int site_actuel = rand() % SITES;
+void *habitant(void *arg) 
+{
+    int habitant_id = *(int *)arg;
+    int site_actuel = rand()%SITES;
     free(arg);
     
-    for (int i = 0; i < TRAJETS; i++) {
+    for (int i = 0; i < TRAJETS; i++) 
+    {
         int site_suivant;
-        do {
-            site_suivant = rand() % SITES;
-        } while (site_suivant == site_actuel);
+        do 
+        {
+            site_suivant = rand()%SITES;
+        } 
+        while (site_suivant == site_actuel);
 
         pthread_mutex_lock(&sites[site_actuel].mutex);
         sites[site_actuel].personnes_attente++;
         pthread_mutex_unlock(&sites[site_actuel].mutex);
         
-        printf("(GET) Habitant %d attend un vélo au site %d\n", id, site_actuel);
+        printf("(GET) Habitant %d attend un vélo au site %d\n",habitant_id,site_actuel);
         sem_wait(&sites[site_actuel].velos);
         
         pthread_mutex_lock(&sites[site_actuel].mutex);
@@ -45,15 +50,15 @@ void *habitant(void *arg) {
         sites[site_actuel].personnes_attente--;
         pthread_mutex_unlock(&sites[site_actuel].mutex);
         
-        printf("(GET) Habitant %d prend un vélo au site %d\n", id, site_actuel);
+        printf("(GET) Habitant %d prend un vélo au site %d\n",habitant_id,site_actuel);
         sem_post(&sites[site_actuel].bornes);
-        //usleep((rand() % 1000 + 1000));
+        //usleep((rand()%1000+1000));
     
         pthread_mutex_lock(&sites[site_suivant].mutex);
         sites[site_suivant].personnes_attente++;
         pthread_mutex_unlock(&sites[site_suivant].mutex);
         
-        printf("(PUT) Habitant %d attend d'avoir accès à une borne du site %d\n", id, site_suivant);
+        printf("(PUT) Habitant %d attend d'avoir accès à une borne du site %d\n",habitant_id,site_suivant);
         sem_wait(&sites[site_suivant].bornes);
         
         pthread_mutex_lock(&sites[site_suivant].mutex);
@@ -62,8 +67,8 @@ void *habitant(void *arg) {
         pthread_mutex_unlock(&sites[site_suivant].mutex);
         
         sem_post(&sites[site_suivant].velos);
-        printf("(PUT) Habitant %d dépose un vélo au site %d\n", id, site_suivant);
-        //usleep((rand() % 1000 + 1000));
+        printf("(PUT) Habitant %d dépose un vélo au site %d\n",habitant_id,site_suivant);
+        //usleep((rand()%1000+1000));
         
         site_actuel = site_suivant;
         
@@ -74,89 +79,109 @@ void *habitant(void *arg) {
     return NULL;
 }
 
-void *gestion_camion(void *arg) {
+void *gestion_camion(void *arg) 
+{
     int velos_camion = 2;
-    while (1) {
+    while (1) 
+    {
         pthread_mutex_lock(&mutex_trajets);
-        if (trajets_effectues >= HABITANTS * TRAJETS) {
+        if (trajets_effectues >= HABITANTS*TRAJETS) 
+        {
             pthread_mutex_unlock(&mutex_trajets);
             printf("Camion arrête son travail, tous les trajets sont effectués.\n");
             break;
         }
         pthread_mutex_unlock(&mutex_trajets);
         
-        for (int i = 0; i < SITES; i++) {
+        for (int i = 0; i < SITES; i++) 
+        {
             pthread_mutex_lock(&sites[i].mutex);
             
-            // Fixed truck logic - ensure atomic operations with proper locking
-            if (sites[i].velos_dispo > BORNES - 2 && velos_camion < CAMION_CAPACITE) {
-                int aRetirer = sites[i].velos_dispo - (BORNES - 2);
-                if (aRetirer > CAMION_CAPACITE - velos_camion)
-                    aRetirer = CAMION_CAPACITE - velos_camion;
+            if (CAMION_CAPACITE > velos_camion && sites[i].velos_dispo > BORNES-2) 
+            {
+                int aRetirer = sites[i].velos_dispo-(BORNES-2);
+                if (CAMION_CAPACITE-velos_camion < aRetirer)
+                {
+                    aRetirer = CAMION_CAPACITE-velos_camion;
+                }
                 
-                // Ensure we don't remove too many bikes
-                if (aRetirer > sites[i].velos_dispo-1)
+                if (sites[i].velos_dispo-1 < aRetirer)
+                {
                     aRetirer = sites[i].velos_dispo-1;
+                }
                 
-                for (int j = 0; j < aRetirer; j++) {
+                for (int j = 0; j < aRetirer; j++) 
+                {
                     sem_wait(&sites[i].velos);
                     sites[i].velos_dispo--;
                     velos_camion++;
                     sem_post(&sites[i].bornes);
                 }
                 
-                printf("Camion prend des vélos au site %d (Vélos dans camion: %d)\n", i, velos_camion);
+                printf("Camion prend des vélos au site %d (Vélos dans camion: %d)\n",i,velos_camion);
             } 
-            else if (sites[i].velos_dispo < 2 && velos_camion > 0) {
-                int bikes_to_add = 2 - sites[i].velos_dispo;
-                if (bikes_to_add > velos_camion)
-                    bikes_to_add = velos_camion;
+            else if (sites[i].velos_dispo < 2 && velos_camion > 0) 
+            {
+                int aAjouter = 2-sites[i].velos_dispo;
+                if (aAjouter > velos_camion)
+                {
+                    aAjouter = velos_camion;
+                }
                 
-                int available_slots = BORNES - sites[i].velos_dispo;
-                if (bikes_to_add > available_slots)
-                    bikes_to_add = available_slots;
+                int spotsDisponibles = BORNES-sites[i].velos_dispo;
+                if (aAjouter > spotsDisponibles)
+                {
+                    aAjouter = spotsDisponibles;
+                }
                 
-                for (int j = 0; j < bikes_to_add; j++) {
+                for (int j = 0; j < aAjouter; j++) 
+                {
                     sem_wait(&sites[i].bornes);
                     sites[i].velos_dispo++;
                     velos_camion--;
                     sem_post(&sites[i].velos);
                 }
                 
-                printf("Camion dépose des vélos au site %d (Vélos dans camion: %d)\n", i, velos_camion);
+                printf("Camion dépose des vélos au site %d (Vélos dans camion: %d)\n",i,velos_camion);
             }
             
             pthread_mutex_unlock(&sites[i].mutex);
-            usleep((rand() % 100 + 100));
+            //usleep((rand()%100+100));
         }
         
         pthread_mutex_lock(&mutex_velos_depot);
-        if (velos_camion > 2) {
-            velos_depot += (velos_camion - 2);
+        if (velos_camion > 2) 
+        {
+            velos_depot+= (velos_camion-2);
             velos_camion = 2;
-            printf("Camion vide les vélos au dépôt (Vélos en dépôt: %d)\n", velos_depot);
-        } else if (velos_camion < 2 && velos_depot > 0) {
-            int needed = 2 - velos_camion;
-            if (needed > velos_depot)
-                needed = velos_depot;
-            velos_depot -= needed;
-            velos_camion += needed;
-            printf("Camion prend des vélos du dépôt (Vélos en dépôt: %d)\n", velos_depot);
+            printf("Camion vide les vélos au dépôt (Vélos en dépôt: %d)\n",velos_depot);
+        } 
+        else if (velos_depot > 0 && velos_camion < 2) 
+        {
+            int requis = 2-velos_camion;
+            if (requis > velos_depot)
+            {
+                requis = velos_depot;
+            }
+            velos_depot-= requis;
+            velos_camion+= requis;
+            printf("Camion prend des vélos du dépôt (Vélos en dépôt: %d)\n",velos_depot);
         }
         pthread_mutex_unlock(&mutex_velos_depot);
         
-        printf("Camion fait un tour, vélos restants: %d, vélos en dépôt: %d\n", velos_camion, velos_depot);
-        usleep((rand() % 100 + 100));
+        printf("Camion fait un tour, vélos restants: %d, vélos en dépôt: %d\n",velos_camion,velos_depot);
+        //usleep((rand()%100+100));
     }
     return NULL;
 }
 
-int main(int argc, char *argv[]) {
-    if (argc != 5) {
-        fprintf(stderr, "Usage: %s <SITES> <HABITANTS> <TRAJETS> <BORNES>\n", argv[0]);
+int main(int argc, char *argv[]) 
+{
+    if (argc != 5) 
+    {
+        fprintf(stderr, "Usage: %s <SITES> <HABITANTS> <TRAJETS> <BORNES>\n",argv[0]);
         return 1;
     }
-    
     SITES = atoi(argv[1]);
     HABITANTS = atoi(argv[2]);
     TRAJETS = atoi(argv[3]);
@@ -165,38 +190,42 @@ int main(int argc, char *argv[]) {
     srand(time(NULL));
     sites = malloc(SITES * sizeof(Site));
     
-    pthread_t habitants[HABITANTS], camion;
+    pthread_t habitants[HABITANTS],camion;
     
-    for (int i = 0; i < SITES; i++) {
-        sem_init(&sites[i].velos, 0, BORNES - 2);
-        sem_init(&sites[i].bornes, 0, 2);
+    for (int i = 0; i < SITES; i++) 
+    {
+        sem_init(&sites[i].velos,0,BORNES-2);
+        sem_init(&sites[i].bornes,0,2);
         pthread_mutex_init(&sites[i].mutex, NULL);
-        sites[i].velos_dispo = BORNES - 2;
+        sites[i].velos_dispo = BORNES-2;
         sites[i].personnes_attente = 0;
     }
-    
-    for (int i = 0; i < HABITANTS; i++) {
-        int *id = malloc(sizeof(int));
-        *id = i;
-        pthread_create(&habitants[i], NULL, habitant, id);
+    for (int i = 0; i < HABITANTS; i++) 
+    {
+        int *habitant_id = malloc(sizeof(int));
+        *habitant_id = i;
+        pthread_create(&habitants[i],NULL,habitant,habitant_id);
     }
-    pthread_create(&camion, NULL, gestion_camion, NULL);
+    pthread_create(&camion,NULL,gestion_camion,NULL);
     
-    for (int i = 0; i < HABITANTS; i++) {
-        pthread_join(habitants[i], NULL);
+    for (int i = 0; i < HABITANTS; i++) 
+    {
+        pthread_join(habitants[i],NULL);
     }
-    pthread_join(camion, NULL);
+    pthread_join(camion,NULL);
     
     int total_velos = velos_depot;
-    for (int i = 0; i < SITES; i++) {
-        total_velos += sites[i].velos_dispo;
-        printf("Site %d contains %d bykes\n", i, sites[i].velos_dispo);
+    for (int i = 0; i < SITES; i++) 
+    {
+        total_velos+= sites[i].velos_dispo;
+        printf("Site %d contains %d bykes\n",i,sites[i].velos_dispo);
     }
     total_velos+= 2;
-    printf("Nombre total de vélos à la fin : %d (doit être %d)\n", total_velos, SITES * (BORNES - 2) + 2);
+    printf("Nombre total de vélos à la fin : %d (doit être %d)\n",total_velos,SITES*(BORNES-2)+2);
     printf("Simulation terminée.\n");
     
-    for (int i = 0; i < SITES; i++) {
+    for (int i = 0; i < SITES; i++) 
+    {
         sem_destroy(&sites[i].velos);
         sem_destroy(&sites[i].bornes);
         pthread_mutex_destroy(&sites[i].mutex);
-- 
GitLab