Tableaux en langage C
On appelle tableau une variable composée de données de même type, stockée de manière contiguë en mémoire (les unes à la suite des autres).
La taille d’un tableau est conditionnée (ou définie) par le type et le nombre de ces éléments :
Taille tableau (en octet) = taille du type de donnée (en octet) * le nombre des éléments
- Le type des éléments du tableau peut être :
- simple : char, int, float, double, ...
- à tableau à une dimension ou tableau unidimensionnel
- tableau
à tableau à plusieurs dimensions ou tableau multidimensionnel
Autres : Pointeurs et Structures
Déclaration
La déclaration d’un tableau à une dimension se fait de la façon suivante :
<Type Simple> Nom_du_Tableau [Nombre_Elements];
Type Simple : définit le type d’élément que contient le tableau (char, int,…)
Nom_du_Tableau : est le nom que l'on décide de donner au tableau, le nom du tableau suit les mêmes règles qu'un nom de variable.
Nombre_Elements : est une expression constante entière positive.
Exemples :
char caracteres[12] ; //Taille en octet : 1 octet * 12 = 12 octets
float reels_SP[8] ; //Taille en octet : 4 octets * 8 = 32 octet
#define N 10 //define permet d’assigner un nom à une constante
int entier[N] ; //Taille en octet : 2 octets * 10 = 20 octets
double reel_DP[2*N-5] ; //Taille en octet : 8 octets * 15 = 120 octets
Initialisation à la déclaration
Il est possible d’initialiser le tableau à la définition :
<Type> Tableau [Nombre_Elements] = {C1, C2, … , Cn};
Où C1, C2, .., Cn sont des constantes dont le nombre ne doit pas dépasser le Nombre_Elements (n<=Nombre_Elements).
Si la liste de constantes ne contient pas assez de valeurs pour tous les éléments,les éléments restantes sont initialisées à zéro.
Exemples :
char voyelles[6] = { 'a' , 'e' , 'i' , 'o' , 'u' , 'y' } ;
int Tableau_entier1[10] = {10 , 5 , 9 , -2 , 011 , 0xaf , 0XBDE}; float Tableau_reel[8] = { 1.5 , 1.5e3 , 0.7E4 };
short A[3] = {12 , 23 , 34 , 45 , 56}; //Erreur !
int Tableau_entier2[] = { 15 , -8 , 027 , 0XABDE } //Tableau de 4 éléments
- Accès aux composantes d’un tableau
Pour accéder à un élément du tableau, il suffit de donner le nom du tableau, suivi de l’indice de l’élément entre crochets :
Nom_du_Tableau [indice]
Où indice est une expression entière positive ou nulle. Un indice est toujours positif ou nul ;
L’indice du premier élément du tableau est 0 ;
L’indice du dernier élément du tableau est égal au nombre d’éléments – 1.
Exemple :
short A[5] = {12 , 23 , 34 , 45 , 56};
A[0] donne accès au 1er élément du tableau A
int i = 4; A[i] donne accès au dernier élément du Tableau A int j = 2; A[2*j-1] donne accès au 4ème élément de A
En revanche la plus part des compilateurs C ne font aucun contrôle sur les indices! Ils laissent passer par exemple : A[20] = 6 ; : Accès en dehors du tableau
Remarques
- Chaque élément ( TAB[i] ) d’un tableau ( int TAB[20] ) est manipulé comme une simple variable (lvalue), on peut :
- scanf("%d", &TAB[i] ); TAB[i] sera initialisé par un entier saisi depuis la clavier printf("TAB[%d] = %d", i , TAB[i] ); Le contenu de TAB[i] sera affiché sur
- écran
- Apparaître comme opérande d’un opérateur d’incrémentation : TAB[i]++ ou -- TAB[i]
- Pour initialiser un tableau (TAB1) par les éléments d’un autre tableau (TAB2) :
- évitez d’écrire TAB1 = TAB2 (incorrect)
- On peut par exemple écrire :
for( i = 0 ; i < taille_tableau ; i++ ) TAB1[i] = TAB2[i];
Déclaration
De manière similaire, on peut déclarer un tableau à plusieurs dimensions :
<Type Simple> Nom_du_Tableau [Nbre_E_1] [Nbre_E_2]…[Nbre_E_N];
- Chaque élément entre crochets désigne le nombre d’éléments dans chaque dimension ;
- Le nombre de dimension n’est pas limité.
Tableaux à deux dimensions (Matrices)
Déclaration
<Type Simple> Nom_du_Tableau [Nombre_ligne] [Nombre_colonne];
Exemple :
short T[3][4] ; //Taille en octet : 3 * 4 * 2 octets = 24 octets La variable tableau T est une matrice. Si on considère la représentation matricielle alors la disposition des éléments de T est :
Tableaux à deux dimensions (matrices)
Initialisation à la déclaration et accès aux éléments :
- Les valeurs sont affectées ligne par ligne lors de l’initialisation à la déclaration
- Accès aux composantes se fait par : Nom_tableau[ligne][colonne]. Exemples :
float A[3][2] = {{-1.05,-1.10} , {86e-5, 87e-5} , {-12.5E4} };
int B[4][4] = { {-1 , 10 , 013 , Oxfe} , {+8 , -077} , {} , {011,-14,0XAD} };
Exemple
- Saisie et affichage des données d’un tableaux d’entiers de 20 éléments aux maximum.
- Déterminer la plus petite valeur d’un tableau d’entiers A. Ecrire un programme C qui remplit un tableau T de N entiers long (taille maximale : 30) et affiche ensuite la valeur et la position du minimum. Si le tableau contient plusieurs minimum, retenir la position du premier minimum rencontré.
- Recherche d'une valeur dans un tableau : Etant donnés un tableau de float ( taille maximale 50) et une valeur. On recherche la première occurrence de cette valeur dans le tableau. S’il existe, on affiche sa position sinon on affiche un message d’erreur.
- Tableau est non trié (recherche séquentielle)
- Tableau est trié (recherche dichotomique).
- Exemple
- Saisie et affichage des donées entières d’une matrice de M ligne (20 lignes au maximum) et N colonnes (30 colonnes au maximum). M et N sont entrées au clavier.
- Produit de deux matrices des données réelles: En multipliant une matrice A de M lignes (au maximum 10 ligne) et N colonnes (au maximum 15 colonnes) avec une matrice B de N lignes et P colonnes (au maximum 20 colonnes), on obtient une matrice C de M lignes et P colonnes :
La composante cij de la matrice C, placée à la ième ligne et jème colonne, se calcule de la façon suivante :
Exercice (Extrait du CC version 2008/2009)
Dans cet exercice, on considérera les entiers de l’ensemble [-200,200]. Ecrire un programme C qui :
- Remplit une matrice A de M lignes et N colonnes (au maximum 30 lignes et 20 colonnes) ligne par ligne par des entiers saisis au clavier.
- Puis construit un tableau T par les éléments strictement positifs de la matrice A parcourue colonne par colonne.
Ex : T = (14, 5, 17, 8, 11, 4, 8, 6, 4, 7)
- Ensuite trie le tableau T selon le critère suivant : tous les entiers pairs doivent être au début du tableau et les entiers impairs à la fin (sans utiliser un tableau intermédiaire).
Ex :
-
- Pour le tableau T = (14, 5, 17, 8, 11, 4, 8, 6, 4, 7)
- deviendra après le tri T = (14, 4, 6, 8, 8, 4, 11, 17, 5, 7)
Enfin affiche le tableau T.
Pas encore de commentaires.
Ajouter un commentaire
Veuillez vous connecter pour ajouter un commentaire.