Programmation C · 9 min read · Oct 12, 2025

Apprendre C/C++ Étape par Étape - Page 7

07. Étape par Étape C/C++ — Programmation C - Tableaux

1. Introduction aux tableaux
2. À propos des tableaux
3. Éléments de tableau
4. Passer des tableaux aux fonctions

| | 5. Types de tableaux | | - Tableaux unidimensionnels 1. Ajouter un élément

  1. Insérer un élément
  2. Supprimer un élément
  3. Remplacer un élément
  4. Rechercher un élément
  5. Suppression d’un tableau
  6. Tri d’un tableau - Tableaux multidimensionnels
    Opérations matricielles utilisant des tableaux multidimensionnels | |

1. Introduction aux tableaux

Une variable peut contenir une valeur constante. Une seule valeur constante et il n’est pas possible de contenir plus d’une valeur dans une variable.

L’exemple suivant démontre la portée d’une variable.

| | int main()
{
int sno;
sno = 1001;
sno = 1008;
sno = 1005;
printf(“%d”, sno);
return 0;
} | | | Sortie :
1005 |

Le programme ci-dessus est capable d’afficher seulement 1005, mais pas toutes les valeurs (c’est-à-dire 1001, 1008, 1005 ).

Pouvons-nous substituer le programme suivant à la place du programme ci-dessus.

| | int main()
{
int sno;
sno 0 = 1001;
sno 1 = 1008;
sno 2 = 1005;
printf(“%d”, sno);
return 0;
} | | | Sortie :
Rien,
Le programme ci-dessus affiche une liste d’erreurs, car l’approche est incorrecte. |

Continuons avec le programme suivant pour obtenir un programme sans erreurs.

| | int main()
{
int sno[3];
sno[0] = 1001;
sno[1] = 1008;
sno[2] = 1005;
printf(“%d”, sno[2] );
return 0;
} | / 3 valeurs à insérer /
/ Première position pour insérer 1001 /
/ Prochaine position pour insérer 1008 /
/ et Prochaine position pour insérer 1005 /
/ Affiche la valeur de la 2ème position / | | | | | Sortie :
Rien | |

Le programme ci-dessus affiche une liste d’erreurs, car l’approche est incorrecte.

En fonction du programme ci-dessus, la variable sno peut contenir plus d’un numéro d’étudiant. C’est facile, en utilisant la technique de multi-localisation, également connue sous le nom de tableaux.

2. À propos des tableaux

Les tableaux contiennent un certain nombre d’éléments de données du même type. Ce type peut être un type de données simple, une structure ou une classe. Les éléments d’un tableau sont appelés éléments. Le nombre accède aux éléments ; ce nombre est appelé un index. Les éléments peuvent être initialisés à des valeurs spécifiques lorsque le tableau est défini.

Les tableaux peuvent avoir plusieurs dimensions.

Un tableau à deux dimensions est un tableau de tableaux. L’adresse d’un tableau peut être utilisée comme argument pour une fonction ; le tableau lui-même n’est pas copié. Les tableaux peuvent être utilisés comme données membres dans des classes. Il faut faire attention à éviter que des données soient placées en mémoire en dehors d’un tableau.

/ Le programme suivant lit l’âge de 4 personnes et l’affiche /

| | / 47_arrays.c /
#include
int main()
{
int age[4], i;
for( i=0; i<4; i++)
{
printf(“Entrez un âge “); scanf(“%d”, &age[i]);
}

for(i=0; i<4; i++)
printf(“ Vous avez entré %d”, age[i]);

return 0;
} |

| | |

Comme d’autres variables en C, un tableau doit être défini avant de pouvoir être utilisé pour stocker des informations. Et, comme d’autres définitions, une définition de tableau spécifie un type de variable et un nom.

Mais elle inclut une autre caractéristique : une taille. La taille spécifie combien d’éléments de données le tableau contiendra. Elle suit immédiatement le nom et est entourée de crochets.

3. Éléments de tableau

Les éléments d’un tableau sont appelés éléments. Un tableau unidimensionnel accepte des valeurs soit de manière ligne, soit de manière colonne. Il ne peut stocker qu’un seul ensemble de valeurs.
Le premier élément du tableau est 0, le deuxième est 1, et ainsi de suite.

| | |

Une valeur de tableau peut être initialisée directement au moment de la conception.
L’initialisation des tableaux est comme suit..

| | |

4. Passer des tableaux aux fonctions

Les tableaux peuvent être utilisés comme arguments pour des fonctions.

Dans une déclaration de fonction, le type de données et les tailles du tableau représentent des arguments de tableau.

void display(float [DISPLAY][MONTHS]);

Lorsque la fonction est appelée, seul le nom du tableau est utilisé comme argument.

 display(sales); 

Programme pour accepter et imprimer un tableau de 10 éléments

| | / 48_ ele10.c /
#define MAX 10
display(int a[MAX])
{
int i;
for(i = 0;iprintf(“ %d”,,a[i]);
}

int main()
{
int x[MAX], i;
for(i=0;iscanf(“%d”,&x[i]);

display(x);

return 0;
} |

Retourner un tableau de valeurs à partir de fonctions est également possible mais nous devons être clairs sur le concept de pointeurs. Veuillez consulter les sujets sur les pointeurs pour plus d’informations.

5. Classification des tableaux

Les tableaux sont de deux types.

| | 1. Tableaux unidimensionnels

  1. Tableaux multidimensionnels |

1. Tableaux unidimensionnels

Un tableau unidimensionnel est une collection d’éléments de manière ligne ou colonne.
Un tableau unidimensionnel peut accepter les opérations suivantes.

| | 1. Ajouter un élément

  1. Insérer un élément
  2. Supprimer un élément
  3. Remplacer un élément
  4. Rechercher un élément
  5. Suppression d’un tableau
  6. Tri d’un tableau |

Le programme suivant est capable d’effectuer toutes les tâches décrites ci-dessus.

| | / FONCTIONS DE TABLEAU /
/ 49_sarray.c /
#define N 100
#define M 10
int i,j,r,c,r1,r2,c1,c2; / Lire les éléments du tableau /
int accept_values(int a[N])
{
int n;
printf(“ Combien de valeurs souhaitez-vous entrer..? “);
scanf(“%d”,&n);
printf(“ Entrez les éléments de données.. “);
for(i=0;iscanf(“%d”,&a[i]);
return n;
} / Afficher les éléments du tableau /
void display(int a[N],int n)
{
printf(“ Les éléments du tableau sont…”);
for(i=0;iprintf(“ %d”,a[i]);
} / Supprimer un élément du tableau /
int delete_cell(int a[N],int n)
{
int pos;
char ch;
printf(“ Entrez la position de l’élément à supprimer : “);
scanf(“%d”,&pos);
for(i=pos-1;ia[i] = a[i+1];
n–;
printf(“ Souhaitez-vous continuer..(y/n)?”);
ch = getche();
if(ch == ‘y’) delete_cell(a,n);
return n;
} / Insérer un élément dans le tableau /
int insert_cell(int a[N],int n)
{
int pos, new;
char ch;
printf(“ Entrez l’élément à insérer : “); scanf(“%d”,&new);
printf(“ Entrez la position d’insertion : “); scanf(“%d”,&pos);
for(i=n;i>=pos;i–)
a[i] = a[i-1];
a[pos-1] = new;
n++;

printf(“ Souhaitez-vous continuer..(y/n)?”);
ch = getche();
if(ch==’y’) insert_cell(a,n);
return n;
} / Pour ajouter un élément à un tableau existant /
int append_cell(int a[N],int n)
{
int pos, new;
char ch;
printf(“ Entrez l’élément à ajouter : “);
scanf(“%d”,&new);
a[n] = new;
n++;
printf(“ Souhaitez-vous continuer..(y/n)?”);
ch = getche();
if(ch==’y’)append_cell(a,n);
return n;
} / Trier une liste d’éléments d’un tableau par ordre décroissant /
void sort_list_descend(int a[N],int n)
{
int temp;
for(i=0;ifor(j=i;jif(a[i] < a[j])
{
temp = a[i];
a[i] = a[j];
a[j] = temp;
}
printf(“ Les éléments triés par ordre décroissant sont…”);
} / Trier une liste d’éléments d’un tableau par ordre croissant /
void sort_list_ascend(int a[N],int n)
{
int temp;
for(i=0;ifor(j=i;jif(a[i] > a[j])
{
temp = a[i];
a[i] = a[j];
a[j] = temp;
}
printf(“ Les éléments triés par ordre croissant sont.. “);
} / Pour trouver le plus petit et le plus grand d’un tableau existant /
void small_big(int a[N],int n)
{
int temp;
for(i=0;ifor(j=i;jif(a[i] < a[j])
{
temp = a[i];
a[i] = a[j];
a[j] = temp;
}
printf(“ Le plus petit élément est : %d”,a[n-1]);
printf(“ Le plus grand élément est : %d”,a[0]);
} / Rechercher un élément dans un tableau /
void search(int a[N],int n)
{
int target, temp=0;
printf(“ Entrez l’élément à rechercher : “);
scanf(“%d”,&target);
for(i=0;iif(a[i] == target)
{
printf(“ Trouvé à la position n° %d”,i+1);
temp = 1;
}
if(temp == 0)
printf(“ Non trouvé”);
} / Programme principal / / Pour démontrer des opérations simples sur les tableaux / #include
#include #define m 100
int main()
{
int a[m],n; char ch;
clrscr();
n = accept_values(a);
do
{
printf(“ 1 - Append_cell”);
printf(“ 2 - Delete_cell”);
printf(“ 3 - Insert_cell”);
printf(“ 4 - Sort_list_descend”);
printf(“ 5 - Sort_list_ascend”);
printf(“ 6 - Small_big”);
printf(“ 7 - Search”);
printf(“ 8 - Remove_list”);
printf(“ 9 - Exit”);
printf(“ Entrez votre choix : “); ch = getche();
printf(“ “);
switch(ch)
{
case ‘1’: n = append_cell(a,n); break;
case ‘2’: n = delete_cell(a,n); break;
case ‘3’: n = insert_cell(a,n); break;
case ‘4’: sort_list_descend(a,n); break;
case ‘5’: sort_list_ascend(a,n); break;
case ‘6’: small_big(a,n); break;
case ‘7’: search(a,n); break;
case ‘8’: n = 0; break;
case ‘9’: printf(“ Cela mettra fin à votre programme.”); break;
}
display(a,n);
printf(“ Souhaitez-vous exécuter à nouveau..(y/n)?”);
ch = getche();
}
while(ch!=’9’);
return 0;
} |

2. Tableaux à double dimension

Un tableau à double dimension est une collection d’éléments de manière ligne et colonne.
Un tableau multidimensionnel peut accepter les opérations suivantes.

Un tableau multidimensionnel est couramment utilisé dans les domaines des matrices pour comprendre l’ensemble des tâches de la manière la plus simple.

FONCTIONS MATRICES

| | / 50_menumat.c /
#define N 100
#define M 10
int i, j, r, c, r1, r2, c1, c2; / Lire les valeurs pour une MATRICE /
void read_matrix(int A[M][M])
{
printf(“ Combien de lignes ? “);
scanf(“%d”,&r);
printf(“ Combien de colonnes ? “);
scanf(“%d”,&c);
for(i=0;ifor(j=0;jscanf(“%d”,&A[i][j]);
} / Écrire les valeurs d’une MATRICE /
void disp_matrix(int A[M][M])
{
for(i=0;i{
for(j=0;jprintf(“%5d”,A[i][j]);
printf(“ “);
}
} / Pour trouver la TRANSPOSE d’une MATRICE de TOUT ORDRE /
void tra_matrix_1(int T[M][M],int A[M][M])
{
printf(“ La transposée de A est “);
for(i=0;i{
for(j=0;j{
T[i][j] = A[j][i];
printf(“%5d”,T[i][j]);
}
printf(“ “);
}
} / Pour AJOUTER deux MATRICES ( possible, seulement si elles sont de MÊME ORDRE ) /
void add_matrix(int C[M][M],int A[M][M],int B[M][M])
{
for(i=0;ifor(j=0;jC[i][j] = A[i][j] + B[i][j];
printf(“ La somme de A et B est”);
} / Pour MULTIPLIER des MATRICES de TOUT ORDRE ( à condition qu’elles respectent la RÈGLE DE MULTIPLICATION DES MATRICES ) /
void mul_matrix_1(int C[M][M],int A[M][M],int B[M][M])
{
int k;
printf(“ Le produit de A et B est.. “);
printf(“ Matrice C “);
for(i=0;i{
for(j=0;j{
C[i][j]=0;
for(k=0;kC[i][j] = C[i][j]+(A[i][k]B[k][j]);
printf(“%5d”,C[i][j]);
}
printf(“ “);
}
} /
Pour SOUSTRAIRE deux MATRICES ( possible, seulement si elles sont de MÊME ORDRE ) /
void sub_matrix(int C[M][M],int A[M][M],int B[M][M])
{
for(i=0;ifor(j=0;jC[i][j] = A[i][j] - B[i][j];
printf(“ La différence de A et B est”);
} /
Un programme piloté par MENU pour effectuer des opérations MATRICES */
#include
#include
int main()
{
int A[M][M],B[M][M],C[M][M],T[M][M]; char ch;
clrscr( );
printf(“ Entrez les éléments de la matrice A.. “); read_matrix(A); r1=r; c1=c;
printf(“ Matrice A “); disp_matrix(A);
printf(“ Entrez les éléments de la matrice B.. “); read_matrix(B); r2=r; c2=c;
printf(“ Matrice B “);disp_matrix(B);
do {
printf(“ 1:Addition”);
printf(“ 2:Soustraction”);
printf(“ 3:Multiplication”);
printf(“ 4:Transposée”);
printf(“ 5:Sortie”);
printf(“ Entrez votre choix.. “); ch = getche();
switch(ch)
{
case ‘1’:
if(r1==r2 && c1==c2)
{
add_matrix(C,A,B);printf(“ Matrice C “);
disp_matrix(C);
}
else
{
printf(“ Les valeurs que vous avez entrées pour r1,r2 && c1,c2 ne sont pas égales, “);
printf(“ hence je ne peux pas faire cette addition de matrices.”);
printf(“ Veuillez entrer les bonnes matrices.”);
} break;

case ‘2’:
if(r1==r2 && c1==c2)
{
sub_matrix(C,A,B);printf(“ Matrice C “);
disp_matrix(C);
}
else
{
printf(“ Les valeurs que vous avez entrées pour r1,r2 && c1,c2 ne sont pas égales, “);
printf(“ hence je ne peux pas faire cette soustraction de matrices.”);
printf(“ Veuillez entrer les bonnes matrices.”);
} break;

case ‘3’:
if(c1==r2)
mul_matrix_1(C,A,B);
else
{
printf(“ Les colonnes(c1) de la matrice A ne sont PAS ÉGALES À“);
printf(“ Les lignes(r2) de la matrice B.”);
printf(“ Donc je ne peux pas faire cette multiplication de matrices.”);
printf(“ Veuillez entrer des matrices telles que c1 == r2.”);
} break;

case ‘4’:   printf(“ L’ordre de la matrice A est %d x %d”,r1,c1);
tra_matrix_1(T,A);
printf(“ L’ordre de la transposée de A est %d x %d”,c1,r1); break;

case ‘5’: printf(“ Cela mettra fin à votre programme.”); break;
}
printf(“ Souhaitez-vous exécuter à nouveau…[y/n]? “); ch=getche();
}while(ch!=’5’);
return 0;
}

Share: X/Twitter LinkedIn

Recevez de nouveaux articles dans votre boîte de réception.

Aucun spam. Désabonnez-vous à tout moment.