Télécharger la présentation
La présentation est en train de télécharger. S'il vous plaît, attendez
Publié parDamien Bataille Modifié depuis plus de 9 années
1
8PRO107 Éléments de programmation Les tableaux multidimensionnels
2
Tableau à deux dimensions............ tab2d[2][0] tab2d[1][1] tab2d[1][0] tab2d[0][1] tab2d[0][0]............ int tab2d[2][1] 512 354 2311 Tableau de 3 lignes et 2 colonnes: 0 1 2 01 Déclaration en C++: int tab2d[3][2]; int
3
Tableau à deux dimensions Un tableau à deux dimension est un tableau de tableaux. Par exemple dans la déclaration int tab2d[3][2]; on a que tab2d est un tableau contenant 3 éléments et chaque élément tab2d[i] est un tableau de 2 entiers............. tab2d[2][0] tab2d[1][1] tab2d[1][0] tab2d[0][1] tab2d[0][0]............ int tab2d[2][1] { { { tab2d[0] tab2d[2] tab2d[1] int tab2d
4
Tableau à plusieurs dimensions En principe, on peut déclarer des tableaux possédant un nombre de dimensions arbitraire. En pratique, on utilise rarement des tableaux de dimension supérieure à 2.
5
Initialiser un tableau n×m int ligne, col, tab2d[100][80] ; for ( ligne = 0; ligne < 100; ligne++ ) for ( col = 0; col < 80; col++ ) tab2d[ligne][col] = 0 ;
6
Étude de cas 1 Description du problème: Lire une table d’entiers de n lignes et m colonnes. Afficher la table telle qu’elle était à l’entrée. Spécification de l’entrée: deux entiers représentant n et m, respectivement, suivis des entiers de la table donnés ligne par ligne.
7
Étude de cas 1 Exemple 3 4 12 1 45 67 3 54 5 65 2 31 11 3
8
Étude de cas 1 #define MAXLIGNE 100 #define MAXCOL 80 int main () { int n, m ; int mat[MAXLIGNE][MAXCOL] ; std::cin >> n >> m ; liremat(mat, n, m) ; ecriremat(mat, n, m) ; return 0 ; }
9
Étude de cas 1 void liremat ( int mat[MAXLIGNE][MAXCOL], int n, int m ) { int ligne, col ; for ( ligne = 0; ligne < n; ligne++ ) for (col=0; col < m; col++) std::cin >> mat[ligne][col] ; }
10
Étude de cas 1 void liremat ( int mat[MAXLIGNE][MAXCOL], int n, int m ) { int ligne, col ; for ( ligne = 0; ligne < n; ligne++ ) { for (col=0; col < m; col++) { std::cin >> mat[ligne][col] ; }
11
Étude de cas 1 void ecriremat ( int mat[MAXLIGNE][MAXCOL], int n, int m ) { int ligne, col ; for ( ligne = 0; ligne < n; ligne++ ) { for ( col = 0; col < m; col++ ) std::cout << mat[ligne][col] ; std::cout << std::endl ; }
12
Étude de cas 2 Description du problème: Lire deux matrices d’entiers n×n, les multiplier et afficher la matrice résultante. Spécification de l’entrée: Un entier représentant n suivis des entiers des matrices donnés ligne par ligne.
13
Étude de cas 2 Exemple 3 12 1 45 3 54 5 2 31 11 23 54 76 12 45 87 51 23 64
14
Étude de cas 2 #define MAX 100 int main () { int n ; int mat1[MAX][MAX] ; int mat2[MAX][MAX] ; int mat3[MAX][MAX] ; std::cin >> n ; liremat(mat1, n, n) ; liremat(mat2, n, n) ; multmat(mat1, mat2, mat3, n) ; ecriremat(mat3, n, n) ; return 0 ; }
15
Étude de cas 2 void multmat ( int mat1[][MAX], int mat2[][MAX], int mat3[][MAX], int n ) { int i, j ; for ( i = 0; i < n; i++ ) for ( j = 0; j < n; j++ ) calculer le produit de la i-ème ligne et de la j-ième colonne mettre le résultat dans mat3[i][j] }
16
Étude de cas 2 void multmat ( int mat1[][MAX], int mat2[][MAX], int mat3[][MAX], int n ) { int i, j ; for ( i = 0; i < n; i++ ) for ( j = 0; j < n; j++ ) mat3[i][j] = lparc(mat1, mat2, i, j, n) ; }
17
Étude de cas 2 int lparc ( int m1[][MAX], int m2[][MAX], int i, int j, int n ) { int k, somme ; somme = 0 ; for ( k = 0; k < n; k++ ) somme = somme + m1[i][k] * m2[k][j] ; return somme ; }
Présentations similaires
© 2024 SlidePlayer.fr Inc.
All rights reserved.