Correction du TD n°8

Exercice 1

Calcul de la somme des valeurs d'une colonne d'une matrice.

001 fonction sommeColonneMatrice(m,c) : entier
002 Données m : Tableau [N][M] de entier
003 c : entier
004 Locales i : entier { Indice de boucle pour }
005 s : entier { Somme }
006 s := 0
007 pour i de 0 à N-1 faire
008 s := s + m[i][c]
009 fait
010 Resultat : s
011 fin fonction

Calcul de la somme des valeurs d'une ligne d'une matrice.

001 fonction sommeLigneMatrice(m,l) : entier
002 Données m : Tableau [N][M] de entier
003 l : entier
004 Locales i : entier { Indice de boucle pour }
005 s : entier { Somme }
006 s := 0
007 pour i de 0 à M-1 faire
008 s := s + m[l][i]
009 fait
010 Resultat : s
011 fin fonction

Calcul de la somme des valeurs d'une diagonale d'une matrice.

001 fonction sommeDiagonale1Matrice(m,d) : entier
002 Données m : Tableau [N][N] de entier
003 d : entier
004 Locales i : entier { Indice de boucle pour }
005 s : entier { Somme }
006 s := 0
007 pour i de 0 à N-1 faire
008 s := s + m[i][(d+i)%N]
009 fait
010 Resultat : s
011 fin fonction

Calcul de la somme des valeurs d'une diagonale d'une matrice.

001 fonction sommeDiagonale2Matrice(m,d) : entier
002 Données m : Tableau [N][N] de entier
003 d : entier
004 Locales i : entier { Indice de boucle pour }
005 s : entier { Somme }
006 s := 0
007 pour i de 0 à N-1 faire
008 s := s + m[i][(d-i+N)%N]
009 fait
010 Resultat : s
011 fin fonction

Test si une matrice carrée est pandiagonale magique.

001 fonction testMatriceMagique(m) : booléen
002 Données m : Tableau [N][N] de entier
003 Locales v : entier { Nombre magique }
004 i : entier { Indice de boucle pour }
005 magique : booléen { Résultat fonction }
006 v := sommeColonneMatrice(m,0)
007 magique := vrai
008 i := 0
009 tant que ( i < N ) et magique faire
010 si v != sommeColonneMatrice(m,i) alors
011 res := faux
012 sinon
013 si v != sommeLigneMatrice(m,i) alors
014 res := faux
015 sinon
016 si v != sommeDiagonale1Matrice(m,i) alors
017 res := faux
018 sinon
019 si v != sommeDiagonale2Matrice(m,i) alors
020 res := faux
021 fsi
022 fsi
023 fsi
024 fsi
025 i := i+1
026 fait
027 Résultat : magique
028 fin fonction

Exercice 2

Calcul de la transposée d'une matrice quelconque.

001 action transposeeMatrice(src,dest)
002 Données src : Tableau [N][M] de entier
003 Données-Résultats dest : Tableau [M][N] de entier
004 Locales i,j : entier { Indices de boucle pour }
005 pour i de 0 à N-1 faire
006 pour j de 0 à M-1 faire
007 dest[j][i] := src[i][j]
008 fait
009 fait
010 fin action

Exercice 3

Copie d'une matrice carrée.

001 action copieMatrice(src,dest)
002 Données src : Tableau [N][M] de entier
003 Données-Résultats dest : Tableau [N][M] de entier
004 Locales i,j : entier { Indices de boucle pour }
005 pour i de 0 à N-1 faire
006 pour j de 0 à M-1 faire
007 dest[i][j] := src[i][j]
008 fait
009 fait
010 fin action

Produit d'une matrice carrée par une matrice carrée.

001 fonction produitMatriceMatrice(m1,m2) : Tableau [N][N] de entier
002 Données m1,m2 : Tableau [N][N] de entier
003 Locales i,j,k : entier { Indices de boucle pour }
004 m : Tableau [N][N] de entier { Matrice recherchee }
005 pour i de 0 à N-1 faire
006 pour j de 0 à N-1 faire
007 m[i][j] := 0
008 pour k de 0 à N-1 faire
009 m[i][j] := m[i][j] + m1[i][k]*m2[k][j]
010 fait
011 fait
012 fait
013 Resultat : m
014 fin fonction

Mise à la puissance p entière d'une matrice carrée.

001 fonction puissanceMatrice(t,p) : Tableau [N][N] de entier
002 Données t : Tableau [N][N] de entier
003 p : entier
004 Locales i : entier { Indice de boucle pour }
005 res : Tableau [N][N] de entier { Matrice calculee }
006 copieMatrice(t,res)
007 pour i de 1 à p-1 faire
008 copieMatrice(produitMatriceMatrice(res,t),res)
009 fait
010 Résultat : res
011 fin action

Exercice supplémentaire

Test de symétricité et transitivité d'une relation d'ordre total sur un ensemble représentée par un tableau de booléens.

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