Appliquer le tri sur un tableau de réel
Durée : 1h30
Objectifs :
- Réaliser les algorithmes de tris étudiés en cours
- Coder avec des fichiers séparés
- Utiliser des Tableaux dynamiques
- Appliquer les différents tris à un même tableau
Attention :
À chaque étape de programmation, vous devez vérifier si le programme :
- Compile sans warning
- Obtient les résultats attendus
- Avant de coder, il faut écrire un algo avec un papier et un stylo !
0- Objectifs
1- Créer l’arborescence des fichiers suivantes

2- Créer le squelette du programme
fonctions.h
#ifndef __fonctions_H_
#define __fonctions_H_
/* toutes mes signatures/prototypes de fonctions/méthodes */
#endif
fonctions.c
#include "fonctions.h"
/* toutes mes signatures/prototypes de fonctions/méthodes + leur corps */
trisLents.h
#ifndef __trisLents_H_
#define __trisLents_H_
/* toutes mes signatures/prototypes de fonctions/méthodes */
#endif
trisLents.c
#include "trisLents.h"
/* toutes mes signatures/prototypes de fonctions/méthodes + leur corps */
main.c
#include <stdio.h>
#include "fonctions.h"
#include "trisLents.h"
int main(){
printf("C'est le TD5 !");
return 0;
}
3- Créer la fonction permettant d’allouer un tableau dynamique d’entiers (1D)
- La taille devra être une fixée par l’utilisateur au début du programme ou via une variable globale (exemple : #define TAILLE 100)
- La compilation doit être séparée
- le corps de la fonction est dans le fichier fonctions.c
- la signature de la fonction dans fichier fonctions.h
- l’appel de la fonction dans le fichier main.c
- La tableau devra contenir uniquement des entiers (vous devrez faire un malloc sur la taille d’un entier)
/* Auteur : ... */
/* Date : ... */
/* Résumé : ... */
/* Entrée(s) : ... */
/* Sortie(s) : ... */
int* allouer(int taille);
4- Créer une méthode permettant d’initialiser toutes les cases de la matrice avec des valeurs aléatoires
- La compilation doit être séparée
- le corps de la fonction est dans le fichier fonctions.c
- la signature de la fonction dans fichier fonctions.h
- l’appel de la fonction dans le fichier main.c
- Attention :
- ne pas oublier dans le main.c et sa fonction main l’instruction d’initialisation de rand
- ne pas oublier le include contenant les instructions de génération aléatoire !
...
#include <time.h>
...
int main(){
...
srand(time(NULL));
...
}
/* Auteur : ... */
/* Date : ... */
/* Résumé : ... */
/* Entrée(s) : ... */
/* Sortie(s) : ... */
void initialiser(int* monTab,int taille);
5- Créer une méthode permettant d’afficher le tableau
- La compilation doit être séparée
- le corps de la fonction est dans le fichier fonctions.c
- la signature de la fonction dans fichier fonctions.h
- l’appel de la fonction dans le fichier main.c
/* Auteur : ... */
/* Date : ... */
/* Résumé : ... */
/* Entrée(s) : ... */
/* Sortie(s) : ... */
void afficher(int* monTab,int taille);
6- Créer une méthode permettant de copier un tableau dans un autre
- La compilation doit être séparée
- le corps de la fonction est dans le fichier fonctions.c
- la signature de la fonction dans fichier fonctions.h
- l’appel de la fonction dans le fichier main.c
- Objectif : garder en mémoire le tableau initial et appliquer l’ensemble des tris étudiés en cours
- Attention : le tableau copier doit avoir été alloué dans le programme principal
/* Auteur : ... */
/* Date : ... */
/* Résumé : ... */
/* Entrée(s) : ... */
/* Sortie(s) : ... */
void copie(int* tableauOriginal, int* tableauCopie, int tailleTableau);
7- Créer une méthode permettant d’effectuer un échange entre 2 valeurs dans un tableau
- La compilation doit être séparée
- le corps de la fonction est dans le fichier fonctions.c
- la signature de la fonction dans fichier fonctions.h
- l’appel de la fonction dans le fichier main.c
/* Auteur : ... */
/* Date : ... */
/* Résumé : ... */
/* Entrée(s) : ... */
/* Sortie(s) : ... */
void echange(int* monTab, int i, int j);
8- Coder l’ensemble des tris étudiés en cours
- La compilation doit être séparée
- le corps de la fonction est dans le fichier trisLents.c
- la signature de la fonction dans fichier trisLents.h
- l’appel de la fonction dans le fichier main.c
- Attention :
- n’oubliez pas de sauvegarder une copie du tableau créé aléatoirement
- d’appliquez le tri à la copie du tableau, afin de pouvoir le réutiliser pour les autres tris
/* Auteur : ... */
/* Date : ... */
/* Résumé : ... */
/* Entrée(s) : ... */
/* Sortie(s) : ... */
void triSelection(int* monTab, int taille);
/* Auteur : ... */
/* Date : ... */
/* Résumé : ... */
/* Entrée(s) : ... */
/* Sortie(s) : ... */
void triBulles(int* monTab, int taille);
/* Auteur : ... */
/* Date : ... */
/* Résumé : ... */
/* Entrée(s) : ... */
/* Sortie(s) : ... */
void triInsertion(int* monTab, int taille);
9- (Bonus)
- Créer un makefile permettant de compiler le tout
- Ajouter au programme la possibilité de rajouter un argument à l’éxécution avec la taille du Tableau
- Créer un menu interactif permettant à l’utilisateur de choisir un tri en particulier
- Coder les tris drapeau, shell, cocktail.