From 2be5ddbf911c52205163577000d61267d9d429ce Mon Sep 17 00:00:00 2001
From: Pradheep Unnikrishnan <pradheep.unnikrishnan@etu.unistra.fr>
Date: Thu, 21 Mar 2024 00:26:23 +0100
Subject: [PATCH] commentaires pour la documentation Doxyfile de tous les
 fichiers sources .c

---
 .../code_modifie/reorganisation/src/alea.c    | 13 ++++
 .../code_modifie/reorganisation/src/io.c      | 15 +++++
 .../code_modifie/reorganisation/src/main.c    | 61 +++++++++++++++++++
 .../code_modifie/reorganisation/src/remplir.c | 15 +++++
 .../code_modifie/reorganisation/src/tri.c     | 35 +++++++++++
 5 files changed, 139 insertions(+)
 create mode 100644 TP3_SUITE_TP2_CLONE/code_modifie/reorganisation/src/alea.c
 create mode 100644 TP3_SUITE_TP2_CLONE/code_modifie/reorganisation/src/io.c
 create mode 100755 TP3_SUITE_TP2_CLONE/code_modifie/reorganisation/src/main.c
 create mode 100644 TP3_SUITE_TP2_CLONE/code_modifie/reorganisation/src/remplir.c
 create mode 100644 TP3_SUITE_TP2_CLONE/code_modifie/reorganisation/src/tri.c

diff --git a/TP3_SUITE_TP2_CLONE/code_modifie/reorganisation/src/alea.c b/TP3_SUITE_TP2_CLONE/code_modifie/reorganisation/src/alea.c
new file mode 100644
index 0000000..4a4ad6e
--- /dev/null
+++ b/TP3_SUITE_TP2_CLONE/code_modifie/reorganisation/src/alea.c
@@ -0,0 +1,13 @@
+#include "alea.h"
+
+/**
+ *@fn int alea(int m)
+ *@brief Génère une valeur aléatoire entre 0 et m 
+ *@param m Limite supérieur pour la création d'un nombre aléatoire 
+ *@return Un entier aléatoire entre 0 et m
+*/
+int alea(int m)
+{
+    return rand() % (m + 1);
+}
+
diff --git a/TP3_SUITE_TP2_CLONE/code_modifie/reorganisation/src/io.c b/TP3_SUITE_TP2_CLONE/code_modifie/reorganisation/src/io.c
new file mode 100644
index 0000000..2b9cd8b
--- /dev/null
+++ b/TP3_SUITE_TP2_CLONE/code_modifie/reorganisation/src/io.c
@@ -0,0 +1,15 @@
+#include "io.h"
+
+/**
+ * @fn void affiche()
+ * @brief Affiche les élements du tableau t
+*/
+void affiche()
+{
+    int i;
+    for (i = 0; i < t.taille; i++)
+    {
+        printf("%d\t", t.valeur[i]);
+    }
+    printf("\n");
+}
\ No newline at end of file
diff --git a/TP3_SUITE_TP2_CLONE/code_modifie/reorganisation/src/main.c b/TP3_SUITE_TP2_CLONE/code_modifie/reorganisation/src/main.c
new file mode 100755
index 0000000..6208348
--- /dev/null
+++ b/TP3_SUITE_TP2_CLONE/code_modifie/reorganisation/src/main.c
@@ -0,0 +1,61 @@
+/**
+ *@file main.c
+ *@brief Programme principale pour trier un tableau dynamique 1D (une dimension)
+ *@details Ce programme créer un tableau, le remplit avec des valeurs aléatoires, le trie, puis affiche le tableau trié
+ *@author Pradheep U.
+ *@date 20/03/2024
+ *@version 2.0
+ *@copyright Copyright 2024 Pradheep U.
+*/
+
+#include "tableau.h"
+#include "alea.h"
+#include "remplir.h"
+#include "io.h"
+#include "tri.h"
+
+tableau t; //Déclaraition d'un tableau dynamique
+
+/**
+ * @fn int main(argc, char **argv)
+ * @brief Fonction principale
+ * @param argc Nombre d'arguments de ligne de commande
+ * @param argv Tableau des arguements de ligne de commande
+ * @return 0 en cas de succès, 1 en cas d'échec
+ * @details Verifie le nombre d'arguments et procéde au remplissage, au tri et à l'affichage du tableau
+*/
+int main(int argc, char **argv)
+{
+
+    if (argc < 3)
+    {
+        printf("usage : main <nb elems> <max val>\n"); //la valeur maximale que peut prendre une valeur 
+        return 1;
+    }
+
+    t.taille = atoi(argv[1]); // lecture du 1er argument
+   
+    int m = atoi(argv[2]);    // lecture du 2eme argument
+
+
+    t.valeur = NULL;                                     // initialisation du pointeur
+    t.valeur = (int *)malloc(t.taille * sizeof(int)); // allocation du tableau
+    if(t.valeur == NULL) {
+        fprintf(stderr, "Erreur d'allocation de la mémoire\n");
+        exit(EXIT_FAILURE);
+    }
+
+    remplir(m); // remplissage aléatoire du tableau
+
+    printf("tableau non trié :\n");
+    affiche();
+
+    trier();
+
+    printf("tableau trié :\n");
+    affiche();
+
+    free(t.valeur); //libération de la mémoire 
+
+    return 0;
+}
diff --git a/TP3_SUITE_TP2_CLONE/code_modifie/reorganisation/src/remplir.c b/TP3_SUITE_TP2_CLONE/code_modifie/reorganisation/src/remplir.c
new file mode 100644
index 0000000..2f740b8
--- /dev/null
+++ b/TP3_SUITE_TP2_CLONE/code_modifie/reorganisation/src/remplir.c
@@ -0,0 +1,15 @@
+#include "remplir.h"
+
+/**
+ *@fn void remplir(int m)
+ *@brief Remllit le tableau t avec des valeurs aléatoires
+ *@param m Limite supérieur pour la création d'un nombre aléatoire 
+*/
+void remplir(int m)
+{
+    int i = 0;
+    while (i < t.taille)
+    {
+        t.valeur[i++] = alea(m);
+    }
+}
\ No newline at end of file
diff --git a/TP3_SUITE_TP2_CLONE/code_modifie/reorganisation/src/tri.c b/TP3_SUITE_TP2_CLONE/code_modifie/reorganisation/src/tri.c
new file mode 100644
index 0000000..2bf0ae0
--- /dev/null
+++ b/TP3_SUITE_TP2_CLONE/code_modifie/reorganisation/src/tri.c
@@ -0,0 +1,35 @@
+#include "tri.h"
+
+/**
+ *@fn void bulle(int k)
+ *@brief Trie une portion du tableau t en utilisant l'algortithme du tri à bulle
+ *@param k Limite supérieur pour le tri
+ *@details Pour éviter l'accès en dehors du tableau, 'i + 1' ne doit pas dépasser 'k'; cette condition est validé par i < k 
+*/
+void bulle(int k)
+{
+    int i = 0;
+    for (i = 0; i <= k; i++) //Pour éviter d'accéder hors du tableau, la boucle dans bulle ne doit pas permettre que 'i + 1' dépasse k. Donc i < k dans la condition du boucle for.
+    {
+        // Condition pour un tri décroissant, pour un tri croissant inversé la condition t.valeur[i] > t.valeur[i + 1]) 
+        if (t.valeur[i + 1] > t.valeur[i]) 
+        { 
+            int tmp = t.valeur[i + 1];
+            t.valeur[i + 1] = t.valeur[i];
+            t.valeur[i] = tmp;
+        }
+    }
+}
+
+/**
+ *@fn void trier()
+ *@brief Trie le tableau en tableau t en utilisant l'algorithme du tri à bulle
+*/
+void trier()
+{
+    int i = 0;
+    for (i = t.taille - 1; i >= 0; i--)
+    {
+        bulle(i);
+    }
+}
\ No newline at end of file
-- 
GitLab