Correction du TD n°9

Exercice 1

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

CopieMatrice.lda

Exercice 2

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

Exercice 3

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

ValeurMaximaleMatrice.lda

Exercice 4

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.

ProduitMatrices4x4.lda

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.

ProduitMatrices.lda

Auteur: Nicolas JANEY
UFR Sciences et Techniques
Université de Besançon
16 Route de Gray, 25030 Besançon
nicolas.janey@univ-fcomte.fr