Vous êtes sur la page 1sur 14

1ère Année Ingénieur en Informatique

CHAPITRE 10 :

Tableaux à deux
dimensions

2022-2023 Sid Ahmed BERRABAH


Définition
2

● Les tableaux à une dimension que nous avons étudié


jusqu’ici sont équivalent aux vecteurs en mathématique
mais en pratique nous avons besoin de manipuler des
matrices, c’est à dire des tableaux à deux dimensions.
● Un tableau à deux dimensions peut être vu comme un
tableau où chaque élément est un tableau.

15/01/23
Définition
3

Indices colonnes

1 2 3 j M
1
1
2
2
3
3

Indices lignes
Indices

i
i
Vec[i]

N Mat[i][j]
N

Tableau à 1 dimension Tableau à 2 dimensions

Dans un tableau à 1 dimension, Vec[i] représente la iième case du


tableau unidimensionnel Vec.
Dans un tableau à 2 dimensions, Mat[i,j] représente le contenu de la
case située à l’intersection de la iième ligne et de la jième colonne.
15/01/23
Définition
4

● Quatre éléments fondamentaux définissent un tableau:

1. Son nom: c’est l’identificateur choisi en respectant les règles


usuelles de dénomination des variables.

2. Le nombre de ses dimensions (1 dimension ou 2 dimensions)

3. Sa taille: les valeurs maximales de ses indices.

4. Le type de données qu’il contient.

15/01/23
Déclaration de tableaux à deux dimensions
5

Type nom_tableau[nombre_lignes][nombre_colonnes]
● Type est le type des valeurs du tableau

● Un tableau est une variable et son nom doit respecter les


mêmes règles des identificateurs.

● nombre_lignes est le nombre de lignes de la matrice.

● nombre_colonnes est le nombre de colones de la matrice

Exemple : float notes[5] [4] ;


Le tableau notes contient 20 (5x4) valeurs réelles rangées en
5 lignes et 4 colonnes
15/01/23
Stockage de tableaux à deux dimensions
6

● Les éléments d'un tableau à deux dimensions sont


stockées ligne par ligne dans la mémoire.

● Comme pour les tableaux à une dimension, le nom


d'un tableau est le représentant de l'adresse du
premier élément du tableau (c.-à-d. l'adresse de la
première ligne du tableau).

15/01/23
Initialisation de tableaux à 2 dimensions
7

● Il est possible d’initialiser le tableau à deux dimensions au


moment de la déclaration de la manière suivante :
➔ placer les valeurs une à une entre accolades
➔ À l'intérieur de la liste, les éléments de chaque ligne
du tableau sont encore une fois comprises entre
accolades.

Exemple :

int x[3][4] = {{4, 2, 3, 5 }, {6, 2, 7, 9 }, {8, 1, 0, 5 }};

Remarque : Il faut indiquer au moins le nombre de colonnes.

15/01/23
Initialisation de tableaux à 2 dimensions
8

● Pour améliorer la lisibilité des programmes, on peut


indiquer les composantes dans plusieurs lignes.
● Exemple :

int x[3][4] = { {4, 2, 3, 5 },

{6, 2, 7, 9 },

{8, 1, 0, 5 } };

15/01/23
Initialisation de tableaux à 2 dimensions
9

● Nous ne devons pas nécessairement indiquer toutes


les valeurs : Les valeurs manquantes seront
initialisées par zéro.
Exemple :

double x[3][4] = { {4 , 2e-5 },

{6 , 2E6 , 9 },

{8, 1 , 0.1 , 5.7 } };

15/01/23
Parcourir les éléments d’un
tableau à deux dimension
10
● Si on veut parcourir tous les éléments d’un tableau à deux
dimensions, on doit utiliser deux boucles imbriquées avec un
compteur pour l’indice des lignes et un autre compteur pour l’indice
des colonnes.
Exemples :
➢ mettre tous les éléments d’un tableau de N lignes et M colonnes à
zeros
float x[N][M] ;
int i, j ;
for (i = 0; i < N; i++)
for(j = 0 ; j <M ; j++)
x[i][j] = 0;
➢ Lecture des éléments d’un tableau de N lignes et M colonnes
for (i = 0; i < N; i++)
for(j = 0 ; j <M ; j++) {
printf("donnez la valeur numéro x[%d,%d] : ", i,j);
scanf("%d", &x[i][j]);
} 15/01/23
Exercices
11

Donner le programme C permettant de (utiliser des fonctions) :

● Lire les 3 notes de pour N étudiants.

● Calculer la moyenne pondérée pour chaque étudiant


moyenne = (2*note1 + note2 + 3*note3)/6

● Donner combien d’étudiants a une moyenne plus grande


que la moyenne de la classe.

● Afficher les résultats (sous forme matrice)

15/01/23
Corrigé de l’exercice

#include <stdio.h>
#include <stdlib.h>
#define N 4 // nombre d'étudiants 4
#define M 4 // 3 notes plus une colonne pour la moyenne

void lireNotes(float Mat[][M], int nl, int nc);


void afficherNotes(float Mat[][M], int nl, int nc);
void calculMoyenne(float Mat[][M], int nl, int nc);
void statistic(float Mat[][M], int nl, int nc);

int main()
{
float notes[N][M];
float moyenne_classe;
int Nstat;
lireNotes(notes,N,M);
calculMoyenne(notes,N,M);
afficherNotes(notes,N,M);
statistic(notes,N,M);
return 0;
}
Corrigé de l’exercice - suite
void lireNotes(float Mat[][M], int nl, int nc)
{
int i,j;
for(i=0; i < nl; i++)
for(j=0; j<nc-1; j++)
{
printf("notes[%d][%d] = ",i,j);
scanf("%f",&Mat[i][j]);
}
}
void afficherNotes(float Mat[][M], int nl, int nc)
{
int i,j;
printf("%10s%10s%10s%10s\n","note1","note2","note3","moy");
for(i= 0; i<nl; i++){
for(j=0; j<nc; j++)
{
printf("%10.2f",Mat[i][j]);
}
printf("\n");
}
Corrigé de l’exercice - suite
void calculMoyenne(float Mat[][M], int nl, int nc)
{ int i;
for(i = 0; i < nl; i++) {
Mat[i][nc-1] = (2*Mat[i][0]+ Mat[i][1]+3*Mat[i][2])/6;
}
}
void statistic(float Mat[][M], int nl, int nc)
{
int i, nEtudiants_moy_sup=0;
float moyClas = 0;
for(i= 0; i < nl; i++) {
moyClas += Mat[i][nc-1];
}
moyClas /= nl;
for(i = 0; i<nl; i++)
{
if(Mat[i][nc-1]>=moyClas)
nEtudiants_moy_sup++;
}
printf("\n\nil y a %d qui une moyenne supérieur à %.2f",nEtudiants_moy_sup,moyClas);
}

Vous aimerez peut-être aussi