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