Académique Documents
Professionnel Documents
Culture Documents
• Un tableau est une structure de donnée formé d’un nombre entier N de variables de même
type qui sont appelées les composantes du tableau.
N
« Déclaration »
✓ Type : définit le type des éléments du tableau.
Type Identificateur [Taille] ; ✓ Identificateur : est le nom du tableau.
/*Tableaux à 1 dimension ✓ Taille : est un nombre entier qui détermine le nombre des éléments
du tableau
• Taille : est nécessairement une VALEUR NUMERIQUE.
• En C, le nom d’un tableau représente l’adresse du premier élément du tableau. Les adresses
des autres composantes sont calculées (automatiquement) relativement à cette adresse.
int A[25]; /*tableau de 25 entiers de type « int » */
Exemple float B[10]; /* tableau de 10 décimaux de type « float » */
char C[30]; /* tableau de 30 caractères (entiers de type « char ») */
• Pour plus de clarté, il est recommandé de donner un nom à la constante « Taille » par
une directive:
#define Taille Val
/*Taille du tableaux à 1 dimension
Exemple
#include <stdio.h> 1 /*taille1: constante de valeur 5*/
#define taille1 5 1
2 #define taille2 3 2 /*taille2: constante de valeur 3*/
main( ) 3 /*a: tableau de 5 entiers*/
{ int a[taille1]; 3
4 char b[taille2]; ….. } 4 /*b: tableau de 3 caractères*/
• Remarque:
1) int tab[0]; → /*Erreur: taille doit être different de 0*/ 3) int b[-3]; → /*Erreur: taille doit être positive */
2) int b[3.4]; → /*Erreur: taille doit être un entier*/ 4) int p=3;
int tab[p]; →/*Erreur: taille ne peut pas être une variable*/
« Mémorisation »
• Lors de la déclaration d'un tableau, une zone mémoire lui sera réservée. Elle sera utilisée
pour le stockage de ses données.
→ Si un tableau possède N composantes et si le type déclaré des composantes requiert M
octets, la mémoire réservée pour ce tableau est de N×M octets.
int compteur[10]; /* le compilateur réserve des places pour 10 entiers, soit 40 octets */
Exemple
float nombre[20]; /* le compilateur réserve des places pour 20 réels, soit 80 octets */
char Tab[5]; /* le compilateur réserve des places pour 5 caractères, soit 5 octets */
Exemple
Supposant que T a été mémorisé à l'adresse mémoire 100, un caractère étant codé sur un
octet, le contenu des cellules mémoire sera alors comme suit :
Contenu de la mémoire
#define taille 3
T=&T[0]
main( )
{
char T[taille]; adresse 100 a &T[0] est 100
T[0]='a';
T[1]='b'; adresse 101 b &T[1] est 101
T[2]='c'; c
adresse 102 &T[2] est 102
}
« Initialisation »
• En C, on peut initialiser les tableaux au moment de leur déclaration.
• Elle consiste à indiquer la liste des valeurs entre accolades.
Type Identificateur [n] = {Valeur1,…,Valeurn};
/* Initialiser du tableaux à 1 dimension
Exemple
int A[5]={10,20,30,40,50} ; 1 1 /*tableau de 5 entiers initialisés à 10,20,30,40 et 50 */
#include <Stdio.h>
int main()
Exemple {int tab[5] = {20,10,5,15,18}; 1 n1 = 20
int n1 = sizeof(tab);
printf("n1= %d\n", n1); 1 2 Total elements = 5
int n2 = sizeof(tab) / sizeof(tab[0]);
printf("Total elements = %d\n", n2); 2
}
« Lecture et affichage »
• Les éléments d'un tableau sont à lire et à afficher élément par élément :
« Affectation »
• L'affectation de valeurs aux éléments d'un tableau se fait également individuellement (comme
pour la lecture et l'affichage).
Exemple Exemple
#include <stdio.h>
#define taille 5 1 #include <stdio.h> 0
main() 1 #define taille 5 1
{ int i, T[taille]; 2 main() 2
T[0] = T[1] = T[3] = 1; 1 { int i, t[taille]; 3
T[4] = 4; 4 for (i = 0;i < taille;i++) 4
T[2] = T[1]*2; t[i] = i;
for (i = 0;i <5; i++) for (i = 0;i < 5; i++)
printf("%d\n", T[i]); } printf("%d\n", t[i]); }
Exercice
Ecrire un programme qui permet de demander à l’utilisateur de saisir les notes pour le cours
« Langage C » pour 30 étudiant dans un tableau, puis le programme calcule la moyenne des notes.
#include <stdio.h>
#define Taille 30
main()
{ float T[Taille];
int i;
float som, moy;
for (i = 0;i < Taille; i++)
{printf("Donner la note num %d : \n", i + 1);
scanf("%f", &T[i]);}
for (i = 0, som = 0;i < Taille; i++)
som += T[i];
moy = som / Taille;
printf("La moyenne=%.2f\n", moy);
}
Exercice
Ecrire un programme qui #include <stdio.h>
permet de faire la somme // define MAX 20
des éléments impairs d’un main()
tableau de nombres entiers { int t[20], i, taille, somme = 0;
de taille N (N est entrée au do { printf("Entrer la taille du tableau: ");
clavier et le maximum N=20). scanf("%d", &taille);
} while (taille<=0 || taille > 20);
printf("Entrer les elements du tableau:\n");
for (i = 0;i < taille;i++) {
printf("t(%d)=",i+1); scanf("%d", &t[i]); }
printf("Les elements du tableau: \n");
for (i = 0;i < taille;i++) { printf("%4d", t[i]); }
printf("\n");
for (i = 0;i < taille;i++) {
if (t[i] % 2 == 1) { somme = somme + t[i]; } }
printf("Voici la somme des elements impairs du tableau: %d", somme);
}
Tableau A L
Rapprochement avec les maths→ "A est un vecteur de L vecteurs de dimension C "
« Déclaration »
✓ Identificateur : est le nom du tableau.
Type Identificateur [ligne][colonne] ; ✓ ligne : nombre de ligne
/*Tableaux à 2 dimensions ✓ colonne : nombre de colonne
« Mémorisation »
• Le nom d’un tableau à deux dimensions représente l’adresse du premier élément du tableau.
• Les composantes de ce tableau sont stockées ligne par ligne dans la mémoire.
int A[10][10]; /*tableau de 10×10 entiers */
Exemple float B[5][4]; /*tableau de 5×4 décimaux */
char C[2][25]; /*tableau de 2×25 caractères*/
« Initialisation»
• Lors de la déclaration d’un tableau, on peut initialiser les composantes du tableau en
indiquant la liste des valeurs entre accolades.
« Lecture et affichage »
« Affectation »
Exemple Exemple
#include <stdio.h> #include <stdio.h>
main() main()
{ int i,j ,t[2][2]; 0
0 { int i,j, t[2][2];
t[0][0]=0; 0
0 for (i = 0;i < 2;i++)
t[0][1] = 0; 0
0 for (j = 0;j < 2;j++)
t[1][0] = 0; 1
1 t[i][j]=i*j;
t[1][1] = 1; for (i = 0;i < 2;i++)
for (i = 0;i < 2;i++) for (j = 0;j < 2;j++)
for (j = 0;j < 2;j++) printf("%d\n", t[i][j]);
printf("%d\n", t[i][j]); return 0;
return 0; } }
Exercice
Ecrire un programme qui permet de demander à l’utilisateur de saisir les notes pour le cours « Langage C » et
les notes du « TP- Langage C » pour 30 étudiant dans un tableau, puis le programme calcule la moyenne de
chaque étudiant.
#include<stdio.h>
#define NumEtud 30
#define NumMat 2
int main()
{ float notes[NumEtud][NumMat];
float S, M; int i, j;
for (i = 0;i < NumEtud;i++)
{ for (j = 0;j < NumMat;j++)
{printf("Donner la note de l'étudiant num %d dans la matiere num %d = ", i + 1, j + 1);
scanf("%f", ¬es[i][j]);
}}
for (i = 0;i < NumEtud;i++)
{S = 0;
for (j = 0;j < NumMat;j++) { S = S + notes[i][j]; }
M = S / NumMat;
printf("La moyennne de l'etudiant num %d est = %.2f\n", i+1, M); }
return 0; }
Exercice #include<stdio.h>
#define MAX 100
Ecrire un programme qui void main()
détermine si une matrice {int mat[MAX][MAX];
carrée des entiers de int N, i, j;
dimension N⨯N (N est int test = 1;
do { printf("Donner le nb de Ligne et de colonne = ");
entrée au clavier et le scanf(" %d", &N); } while (N <= 0 || N>100);
maximum N= 100) est for (i = 0;i < N;i++)
symétrique ou non. { for (j = 0;j < N;j++)
{ printf("Donner mat[%d][%d]: ", i, j); scanf("%d", &mat[i][j]); }}
for (i = 0;i < N;i++)
{ for (j = 0;j < N;j++)
{ printf("%d | ", mat[i][j]); } printf("\n"); }
i = 0;j = 0;
while ((test == 1) && (i < N))
{ while ((test == 1) && (j < N))
{ if (mat[i][j] == mat[j][i])j++;
else { test = 0; } }
i++; }
if (test == 1) printf("Symetrique"); else printf("NON Symetrique"); }