Le document décrit 10 exercices sur les tableaux à une dimension en C. Les exercices couvrent des sujets comme la lecture, l'écriture, la recherche, le tri, la modification et la fusion de tableaux. Plusieurs fonctions sont proposées pour chaque exercice.
0 évaluation0% ont trouvé ce document utile (0 vote)
22 vues2 pages
Le document décrit 10 exercices sur les tableaux à une dimension en C. Les exercices couvrent des sujets comme la lecture, l'écriture, la recherche, le tri, la modification et la fusion de tableaux. Plusieurs fonctions sont proposées pour chaque exercice.
Le document décrit 10 exercices sur les tableaux à une dimension en C. Les exercices couvrent des sujets comme la lecture, l'écriture, la recherche, le tri, la modification et la fusion de tableaux. Plusieurs fonctions sont proposées pour chaque exercice.
Le document décrit 10 exercices sur les tableaux à une dimension en C. Les exercices couvrent des sujets comme la lecture, l'écriture, la recherche, le tri, la modification et la fusion de tableaux. Plusieurs fonctions sont proposées pour chaque exercice.
Téléchargez comme PDF, TXT ou lisez en ligne sur Scribd
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 2
Université Moulay Ismaïl 2020-2021
ENSAM – Meknès 2ième Année / S4 CPI
TP 3 – Tableaux à une dimension Exercice 1 – Questions de cours Soit t un tableau de n éléments de type float. Écrire un programme en C contenant des fonctions pour les questions suivantes. Écrire la fonction principale main au fur et à mesure pour tester chaque question. 1. Les deux fonctions de lecture et d’affichage : void lireTab (float t[], int n) void afficherTab (float t[], int n) Pour lire et afficher un tableau de n éléments réel. 2. Les fonctions somme, min et max : float sum (float t[], int n) float min (float t[], int n) float max (float t[], int n) Pour calculer la somme des éléments, la valeur minimale et la valeur maximale du tableau. 3. Une fonction de recherche : int chercher (float t[], int n, float val) Pour chercher une valeur val dans un tableau t de taille n. La fonction retourne l’indice de la première occurrence de val dans t ou -1 si val n’appartient pas à t. Exemple : pout t = {2, 5, 3, 7, 2, 3, 1, 3}, chercher (t, 8, 3) retourne 2, chercher (t, 8, 6) retourne -1. 4. Une autre fonction de recherche : int compter (float t[], int n, float val) Pour compter le nombre d’occurrences d’une valeur val dans un tableau t de taille n. Exemple : pout t = {2, 5, 3, 7, 2, 3, 1, 3}, compter (t, 8, 3) retourne 3, chercher (t, 8, 6) retourne 0. 5. Une fonction d’inversion : void inverser (float t[], int n) Pour inverser les éléments du tableau. Exemple {5, 1, 2, 3} devient {3, 2, 1, 5} 6. Une fonction de tri : void trier (float t[], int n) Pour trier par ordre croissant les éléments du tableau. Exemple {5, 2, 6, 1, 2} devient {1, 2, 2, 5, 6} 7. Une fonction de vérification du tri : int estTrier (float t[], int n) Qui retourne 1 si t est trié et 0 sinon. Écrire la fonction de recherche dans un tableau trié en utilisant la méthode de recherche dichotomique. 8. Les fonctions de modification : int ajouter (float t[], int n, float val) int supprimer (float t[], int n, int index) int inserer (float t[], int n, float val, int index) Pour ajouter une valeur val à la fin du tableau, supprimer l’élément à la position index, et insérer une valeur val à une position index. Vérifier la disponibilité de l’espace mémoire. Ces fonctions retournent la nouvelle taille du tableau après modification. 9. Une fonction de suppression : int supprimerOccurences (float t[], int n, float val) Pour supprimer toutes les occurrences d’une valeur val du tableau t. N.B. vous devez parcourir le tableau t une seule fois. 10. Une fonction d’insertion dans un tableau trié : int insertionTri (float t[], int n, float val) Pour insérer une valeur val dans un tableau t trié de telle sorte que t reste trié après insertion. Exemple : Si t = {2, 4, 5, 7, 9, 11} et val = 6, Alors après insertion t = {2, 4, 5, 6, 7, 9, 11}. N.B. vous devez parcourir le tableau t une seule fois. Exercice 2 – Problèmes des inversions dans un tableaux Soit T un tableau à une dimension contenant une suite de n entiers distincts. On dit que les deux indices i et j forment une inversion dans T si i<j et T[i]>T[j]. Un problème intéressant consiste à déterminer le nombre d’inversions dans le tableau T. Le nombre d'inversions est le nombre de couples (i, j) pour lesquels i<j et T[i]>T[j]. 1. Écrire une fonction qui retourne le nombre d’inversions dans un tableau T de taille n. 2. Générer dans la fonction principale main un tableau aléatoire de taille n (les éléments de 1 à n aléatoires), puis compter et afficher le nombre d’inversion pour n = 1000, 10000, 100000. 3. Observer l’évolution du temps d’exécution en fonction de n. Exercice 3 – Problème du drapeau hollandais Le problème du drapeau hollandais est un problème de programmation, présenté par Dijkstra, qui consiste à réorganiser un ensemble d'éléments identifiés par leur couleur, sachant que seules trois couleurs sont présentes (par exemple, rouge, blanc, bleu, dans le cas du drapeau des Pays-Bas). On suppose un tableau T de type char contenant les caractères 'R' pour le rouge, 'W' pour le blanc et 'B' pour le bleu. On souhaite réarranger les éléments du tableau T comme suit : les éléments de couleur R au début, les éléments de couleur W au milieu, et les éléments de couleur B à la fin. Exemple : Tableau initial : T = {W, R, R, W, B, W, B, B, R, W, R, W, B} Tableau trié : T = {R, R, R, R, W, W, W, W, W, B, B, B, B} Écrire une fonction pour réaliser ce tri. Exercice 4 – Inclusion entre deux tableaux Écrire une fonction int inclusion (int *A, int n, int *B, int m) pour tester si les éléments d’un tableau B de taille m sont inclus dans le tableau A de taille n. La fonction retourne 1 si 𝐵 ⊂ A et 0 sinon. Exemple : Si A = {5, 2, 7, 9, 1, 4, 2, 6} et B = {2, 4, 6} alors le résultat est 1. Si A = {5, 2, 7, 9, 1, 4, 2, 6} et B = {2, 10, 6} alors le résultat est 0. Exercice 5 – Fusion de deux tableaux triés On considère un tableau A de taille n trié par ordre croissant et un tableau B de taille m trié aussi par ordre croissant. Écrire une fonction qui permet de fusionner A et B dans un tableau C de taille n+m de telle sorte que C soit aussi trié par ordre croissant. Exemple : A = {2, 4, 5, 7, 9, 11} et B = {1, 3, 4, 6, 10, 14, 15} Alors C = {1, 2, 3, 4, 4, 5, 6, 7, 9, 10, 11, 14, 15} N.B. vous devez parcourir les tableaux A et B une seule fois.