Correction du TD n°9
Ecrire un algorithme qui réalise la copie d'une matrice d'entiers de taille n x m dans une autre matrice d'entiers de taille n x m.
001 { Copie d'une matrice d'entiers }
002
003 action copieMatrice(src,dst)
004 Donnees src : tableau [N][M] de entier { tableau source }
005 Donnees / Resultat dst : tableau [N][M] de entier { tableau destination }
006 Locales i,j : entier { indices de boucle }
007 pour i de 0 à N-1 faire
008 pour j de 0 à M-1 faire
009 dst[i][j] := src[i][j]
010 fait
011 fait
012 fin action
a) Ecrire un algorithme qui calcul la somme des valeurs de la diagonale principale d'une matrice de réels carrée de taille n x n.
001 { Calcul de la somme des valeurs }
002 { de la diagonale principale }
003 { d'une matrice de reels }
004
005 fonction sommeDiagonalePrincipale(t) : reel
006 Donnees t : tableau [N][N] de reel { tableau de recherche }
007 Locales i : entier { indice de boucle pour }
008 cumul : reel { variable maximum resultat }
009 cumul := 0.0
010 pour i de 0 à N-1 faire
011 cumul := cumul + t[i][i]
012 fait
013 Resultat : cumul
014 fin fonction
SommeDiagonalePrincipaleMatrice.lda
b) Ecrire un algorithme qui calcul la somme des valeurs de la diagonale secondaire d'une matrice de réels carrée de taille n x n.
001 { Calcul de la somme des valeurs }
002 { de la diagonale secondaire }
003 { d'une matrice de reels }
004
005 fonction sommeDiagonaleSecondaire(t) : reel
006 Donnees t : tableau [N][N] de reel { tableau de recherche }
007 Locales i : entier { indice de boucle pour }
008 cumul : reel { variable maximum resultat }
009 cumul := 0.0
010 pour i de 0 à N-1 faire
011 cumul := cumul + t[i][N-1-i]
012 fait
013 Resultat : cumul
014 fin fonction
SommeDiagonaleSecondaireMatrice.lda
Ecrire un algorithme de recherche de la valeur maximale d'une matrice de réels de taille n x m.
001 { Calcul de la valeur maximale contenue }
002 { dans une matrice de reels }
003
004 fonction valeurMaximaleMatrice(t) : reel
005 Donnees t : tableau [N][M] de reel { tableau de recherche }
006 Locales i,j : entier { indices de boucle pour }
007 max : reel { variable maximum resultat }
008 max := t[0][0]
009 pour i de 0 à N-1 faire
010 pour j de 0 à M-1 faire
011 si t[i][j] > max alors
012 max := t[i][j]
013 fsi
014 fait
015 fait
016 Resultat : max
017 fin fonction
a) Ecrire un algorithme qui calcule le produit d'une matrice de réels de taille 4 x 4 par une matrice de réels de taille 4 x 4.
001 { Calcul de la matrice 4x4 obtenue }
002 { par produit de deux matrices 4x4 de reels }
003
004 action produitMatrices4x4(t1,t2,t)
005 Donnees t1,t2 : tableau [4][4] de reel { tableaux a multiplier }
006 Donnees / Resultat t : tableau [4][4] de reel { tableau resultat }
007 Locales i,j,k : entier { indices de boucle pour }
008 aux : tableau [4][4] de reel { tableau auxiliaire de calcul }
009 pour i de 0 à 3 faire
010 pour j de 0 à 3 faire
011 aux[i][j] := 0.0
012 pour k de 0 à 3 faire
013 aux[i][j] := aux[i][j] + t1[i][k]*t2[k][j]
014 fait
015 fait
016 fait
017 copieMatrice(aux,t);
018 fin action
On utilise l'action de copie de matrice développée à l'exercice 1 adaptée aux tableaux de réels.
b) Ecrire un algorithme qui calcule le produit d'une matrice de réels de taille n x m par une matrice de réels de taille m x p.
001 { Calcul de la matrice nxp obtenue }
002 { par produit de deux matrices nxm et mxp }
003
004 action produitMatrices(t1,t2,t)
005 Donnees t1 : tableau [N][M] de reel { tableau a multiplier }
006 t2 : tableau [M][P] de reel { tableau a multiplier }
007 Donnees / Resultat t : tableau [N][P] de reel { tableau resultat }
008 Locales i,j,k : entier { indices de boucle pour }
009 aux : tableau [N][P] de reel { tableau auxiliaire de calcul }
010 pour i de 0 à N-1 faire
011 pour j de 0 à P-1 faire
012 aux[i][j] := 0.0
013 pour k de 0 à M-1 faire
014 aux[i][j] := aux[i][j] + t1[i][k]*t2[k][j]
015 fait
016 fait
017 fait
018 copieMatrice(aux,t);
019 fin action
On utilise l'action de copie de matrice développée à l'exercice 1 adaptée aux tableaux de réels.
Auteur: Nicolas JANEY
UFR Sciences et Techniques
Université de Besançon
16 Route de Gray, 25030 Besançon
nicolas.janey@univ-fcomte.fr