TP N° 7 Les tableaux Objectifs Objectifs: Savoir déclarer des tableaux ayant u

TP N° 7 Les tableaux Objectifs Objectifs: Savoir déclarer des tableaux ayant un type de base, le remplir et l’initialiser. Accéder facilement aux éléments du tableau. Se familiariser avec l’utilisation des tableaux dans les structures itératives et conditionnelles. Manipuler le passage des tableaux en paramètres de fonction Pré-requis Algorithmique et structure de données, leçon : Les tableaux. Algorithmes de tri. Le tableau est une collection d'objets identiques (de même type) désignés par un identificateur unique. Ils sont disponibles dans tous les langages de programmation et servent à résoudre une multitude de problèmes. On trouve généralement deux sortes de tableaux : Les tableaux à une dimension. Les tableaux à deux dimensions. 1. Les tableaux à une dimension: Définition : Un tableau (uni-dimensionnel) Tab est une variable structurée formée d'un nombre entier N de variables simples du même type, qui sont appelées les composantes du tableau. Le nombre de composantes N est alors la dimension du tableau. Déclaration : Algorithmique Langage C Nontab= tableau [1..<Dimension>] de <type> <TypeSimple> <NomTableau>[<Dimension>]; A=tableau [1..25] d’entier B=tableau [1..100] de reel C=tableau [1..10] de booléen D= tableau [1..30] de caractère int A[25]; /* Créer un tableau de 25 entiers indexés de 0 à 24*/ float B[100]; int C[10]; char D[30]; En C, le nom d'un tableau est le représentant de l'adresse du premier élément du tableau. Les adresses des autres composantes sont calculées (automatiquement) relativement à cette adresse. int A[5] = {1200, 2300, 3400, 4500, 5600}; Remarque : N composants Tab On utilise souvent une constante pour désigner la dimension d'un tableau. #define N 50 /* dimension des tableaux */ . . float R [N] ; Initialisation et réservation automatique : Comme dans le cas des variables, on peut initialiser les composantes du tableau lors de la déclaration, en indiquant la liste des valeurs respectives entre accolades. Exemples int chiffre[10] = {0, 1,2,3, 4, 5, 6, 7, 8, 9}; /*Réservation de 10*sizeof(int) octets.*/ float B[7] = {-1.05, 3.33, 2.0 , 13.25}; /*Réservation de 7*sizeof(float) octets. */ char A[] = "Bonjour !"; /* un tableau */ /*A est un tableau qui a exactement la grandeur pour contenir la chaîne de caractères et la terminaison '\0'.*/ ‘B’ ‘o’ ‘n’ ‘j’ ‘o’ ‘u’ ‘r’ ‘ !’ ‘\0’ Remarques : - Dans le cas où la dimension n'est pas donnée, et est supérieure au nombre de valeurs données, les cases suivantes seront initialisées à 0. - D'une façon générale, les tableaux consomment beaucoup de place en mémoire. On a donc intérêt à les dimensionner au plus juste. Accès aux composantes : Pour accéder au n-ième élément d’un tableau nommé T il faut utiliser la syntaxe suivante T[n -1] Exemples : Moy[6] /*accès au7eme élément du tableau Moy */ printf("%d",Moy[i]); /*Affichage du composant d’indice i*/ scanf("%d",&Moy[i]); /*Lecture du composant d’indice i*/ Remarque : Les indices des cases du tableau commencent à partir de 0 et non à partir de 1. 2. Les tableaux à deux dimensions : Les tableaux à plusieurs dimensions proprement dits n’existent pas en C. Par contre on peut définir des tableaux de tableaux. L’accès se fait de manière analogue aux tableaux de base. Déclaration : Exemples : int compteur[4][5]; /* Créer un tableau à 2 dimension compteur de 4 par 5*/ float nombre[2][10]; /*matrice de 2 lignes et 10 colonnes*/ Initialisation: On peut initialiser les tableaux au moment de leur déclaration Exemples : int x[2][3] = { {1,5,7} , {8,4,3} }; /* tableau de 2 lignes et 3 colonnes */ Accès aux composantes : Un élément du tableau est repéré par ses indices. En langage C les tableaux commencent aux indices 0. Les indices maximums sont donc dim1-1, dim2-1. L’appel se fait de la façon suivante : Nom_tableau[indice1][indice2] Exemples : compteur[2][4] = 5; /*Mettre la valeur 5 dans la ligne 2 colonne 4*/ nombre[i][j] = 6.789 ; printf("%d",compteur[i][j]); /*Affichage de l’élément de coordonner (i,j)*/ scanf("%f",&nombre[i][j]); /*Lecture de l’élément de coordonner (i,j)*/ <TypeSimple> <NomTableau> [Dimension1][ Dimension1]; 3. Passage de tableau en paramètre : Un tableau peut être passé en paramètre à une fonction.ci dessous , on déclare le prototype d’un fonction qui prend en paramètre un tableau et le nombre d’élément. void afficher_tab(int t[] , int elem) ; Lorsqu'on passe un paramètre effectif à une fonction, on a vu que l'on passait une valeur. Il est donc impossible à une fonction de modifier la valeur d'une variable passée en paramètre. En ce qui concerne les tableaux par contre, on passe à la procédure l'adresse du premier élément du tableau. La procédure pourra donc modifier si elle le désire les éléments du tableau. Exemple : Exemple résultat de l’exécution #include <stdio.h> #define Ttab 5 void incrementer(int t[] , int elem); main() { int A[Ttab] = {1, 3, 5, 7, 9}; int i; incrementer(A[] , Ttab) for(i=0; i< Ttab ; i++) { printf("A[%d]=%d\n",i,A[i]); } } void incrementer(int t[], int elem) { int i; for (i=0,i<elem;i++) t[i]++; } Affichage à l’écran : A[0]=2 A[1]=4 A[2]=6 A[3]=8 A[4]= 10 Partie Pratique Note : Chaque exercice est réalisé sur un fichier source à part qui porte le numéro de l’exercice. Par exemple si l’exercice est Exercice 7.1 alors le fichier source va être exer71.cpp Exercice 7.1 Ecrire un programme qui lit la taille d’un tableau (le nombre d’élément maximum égale à 20) et permet de le remplir et de l’afficher sur écran. Exercice 7.2 Ecrire un programme qui lit 10 nombres entiers dans un tableau et de rechercher la plus grande et la plus petite valeur. Exercice 7.3 Ecrire un programme qui transfère un tableau M à deux dimensions L et C (dimensions maximales : 10 lignes et 10 colonnes) dans un tableau V à une dimension L*C. Exercice 7.4 Ecrire un programme qui permet de saisir une matrice d'entiers P[2,2], calculer et afficher son déterminant. Exercice 7.5 Ecrire une fonction affiche_matrice qui admet en paramètre une matrice d’entiers, le nombre de ligne et le nombre de colonnes, et qui affiche le contenu de la matrice. Ecrire un programme main qui permet de déclarer et de remplir une matrice Mat[5,5] d’entiers et l’affiche su l’écran. Exercice 7.6 Déclarer un tableau nb_jour qui doit être initialisé de façon à ce que nb_jour[i] soit égal au nombre de jours du ieme mois de l'année pour i allant de 1 à 12 (nb_jour[0] sera inutilisé). Ecrire une fonction d'initialisation de nb_jour qui utilisera l'algorithme suivant: - si i vaut 2 le nombre de jours est 28 - sinon si i pair et i <= 7 ou i impair et i > 7 le nombre de jours est 30 - sinon le nombre de jours est 31 Ecrire une fonction d'impression des 12 valeurs utiles de nb_jour. La fonction main se contentera d'appeler les procédures d'initialisation et d'impression de nb_jour. Exercice 7.7 Recherche Séquentielle, Recherche par Dichotomie : Ecrire un programme qui initialise un tableau d’entier, puis recherche et affiche l’index d’un élément donné. a- Méthode de recherche séquentielle b- Méthode de recherche dichotomie Exercice 7.8 Tri par Sélection, Tri par Insertion, Tri à Bulles : Ecrire un programme qui tri un tableau d’entier par les méthodes suivantes : - Tri par sélection - Tri par insertion - Tri à bulles. Exercice 7.9 : Réaliser une fonction qui fusionne deux tableaux d’entiers ordonnés par valeurs croissantes. On prévoira les paramètres (trois tableaux, nombre de valeur de chacun) Ecrire un programme main qui lit au clavier deux ensembles de valeurs puis affiche le résultat de la fusion des deux tableaux ordonnés. uploads/Litterature/ tpc7-les-tableaux.pdf

  • 13
  • 0
  • 0
Afficher les détails des licences
Licence et utilisation
Gratuit pour un usage personnel Attribution requise
Partager