0% ont trouvé ce document utile (0 vote)
212 vues9 pages

Correction TD6 Matrices

Ce document présente plusieurs algorithmes pour effectuer des opérations sur des matrices telles que le produit de matrices, la transposition d'une matrice, vérifier si une matrice est symétrique, calculer le triangle de Pascal, trouver les points cols d'une matrice. Deux méthodes sont proposées pour trouver les points cols, l'une utilisant des tableaux d'aide, l'autre directement la matrice.

Transféré par

ARIJ SEBAI
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOCX, PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
212 vues9 pages

Correction TD6 Matrices

Ce document présente plusieurs algorithmes pour effectuer des opérations sur des matrices telles que le produit de matrices, la transposition d'une matrice, vérifier si une matrice est symétrique, calculer le triangle de Pascal, trouver les points cols d'une matrice. Deux méthodes sont proposées pour trouver les points cols, l'une utilisant des tableaux d'aide, l'autre directement la matrice.

Transféré par

ARIJ SEBAI
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOCX, PDF, TXT ou lisez en ligne sur Scribd

Exercice3

Produit de deux matrices

/* La matrice A (N, M) contient N lignes et M colonne

La matrice B (M, P) contient M lignes et P colonnes

La matrice C (N, P) qui est le produit de A et B contient N lignes et P colonnes */

Procédure Produit_matriciel (A : Tab, B : Tab, VAR C : Tab, N: entier, M: entier, P : entier)

VAR

I, j : entier

Début

Pour i de 1 à N Faire

Pour j de 1 à P Faire

C[i][j]  0

Pour k de 1 à M Faire

C[i][j]  C[i][j] + A[i][k] * B[k][j]

Fin pour

Fin pour

Fin pour

Fin

Exercice5

Procédure transposer (VAR Mat : Tab, N : entier)

VAR

Aux, i, j : entier

Début

Pour i de 1 à N faire

Pour j de 1 à i-1 faire /* Les éléments de la diagonale de la matrice restent les mêmes après

transposition*/

Alors Aux  Mat[i][j]

Mat[i][j] Mat[j][i]

Mat [j][i])  aux

Fin si

Fin pour
Fin pour

Fin

Exercice 8

Vérifier si une matrice est symétrique

Fonction Symétrique (MAT : Tab, N : entier) : booléen

VAR

i, j : entier

Début

Pour i de 1 à N faire

Pour j de 1 à i-1 faire

Si (MAT [i][j]≠ MAT [j][i]

Alors Symétrique FAUX

Fin Si

Fin Pour

Fin Pour

Symétrique  VRAI

Fin

Exercice10

Procédure Triangle_Pascal (VAR P : Tab, N : entier)

Var

i, j : entier

Début

P [1, 1] 1

Pour i de 2 à N Faire

P [i, i] 1

P [i,1]  1

Pour j de 2 à i-1 Faire

P [i, j]  P[i-1][ j] +P[i-1][ j-1]

Fin Pour

Fin Pour

Fin
Exercice11 Les points cols d’une matrice

Première méthode :

Algorithme Points_cols

Const

MAX_NL =30 /*Nombre maximal de lignes */

MAX_ NC=20 /*Nombre maximal de colonnes */

MAX=30 /*Nombre maximal de colonnes */

Type

tab : Tableau [1 .. MAX_NL] [1 .. MAX_ NC] d’entiers

/* tab : Tableau [1 .. 30] [1 .. 20] d’entiers*/

tab1 : Tableau [1 .. MAX] d’entiers

Var

A : tab

li, co : entier

Fonction Lecture_ligne() :entier

Var

l :entier

Début

Répéter

Ecrire (« donnez le nombre de lignes de la matrice »)

Lire(l)

Jusqu’à (l >=1 et l<= 30)

Lecture_ligne  l

Fin

Procédure Lecture_ligne( var l :entier) 

Var

Début

Répéter

Ecrire (« donnez le nombre de lignes de la matrice »)

Lire(l)
Jusqu’à (l >=1 et l<= 30)

Fin

Fonction Lecture_colonne() :entier

Var

c : entier

Début

Répéter

Ecrire (« donnez le nombre de colonnes de la matrice »)

Lire(c)

Jusqu’à (c>=1 et c <=20)

Lecture_colonne  c

Fin

Procédure Lecture_Mat (Var A :tab, li, co : entier) 

Var

i ,j : entier

Début

Pour i de 1 à li Faire

Pour j de 1 à co Faire

Ecrire ("A [" , i , "] [ " , j , "] =")

Lire (A [i][ j])

Fin pour

Fin pour

Fin

Procédure Affiche_Mat (A :tab, li, co : entier) 

Var

i,j : entier

Début

Pour i de 1 à li Faire

Pour j de 1 à co Faire
Ecrire (A [i][ j])

Fin pour

Fin pour

Fin

/* Prend en entrée une matrice A et le numéro d'une ligne de A et renvoie la valeur maximale dans
cette ligne. A (li, co) contient li lignes et co colonnes */

Fonction max_li (A :tab, li, co : entier, ligne : entier) : entier

Var

j, Max :entier

Début

Max <- A [ligne ,1]

Pour j de 2 à co faire

Si (Max < A [ligne][ j])

Alors

Max A [ligne][ j])

Fsi

Fin pour

max_li  Max

Fin

/* prend en entrée une matrice A et le numéro d'une colonne de A et renvoie la valeur minimale
dans cette colonne*/

Fonction min_co (A :tab, li, co : entier, colonne : entier) : entier

Var

i, Min :entier

Début

Min  A [1][colonne]

Pour i de 2 à li faire

Si (Min > A [i][ colonne])

Alors

Min A [i][colonne]

Fsi

Fin pour
min_co <- Min

Fin

/* Cherche et affiche les points cols de la matrice passée en paramètre*/

Procédure affich_pts_cols (A :tab, li: entier, co : entier) 

Var

Tmax : tab1 /*La taille de Tmax est li */

Tmin : tab1 /*La taille de Tmin est co */

i, j  , nb_pts_cols : entier

Pour i de 1 à li faire

Tmax[i]  max_li (A, li, co, i)

Fin pour

Pour j de 1 à co faire

Tmin[j]  min_co (A, li, co, j)

Fin pour

Ecrire (« Les points-cols sont : »)

nb_pts_cols  0

Pour i de 1 à li faire

Pour j de 1 à co faire

Si (Tmax[i] = Tmin[j])

Alors

Écrire (« Ligne », i, « Colonne » j, « Point Col = », A [i][ j])

nb_pts_cols  nb_pts_cols +1

Fsi

Fin pour

Fin pour

Si (nb_pts_cols = 0) alors

Ecrire (« Il n’y a aucun point Col »)

Fin

Début

/*Lecture_ligne(li)*/
li <- Lecture_ligne()

co <- Lecture_colonne()

Lecture_Mat (A , li, co)  

Ecrire(« Affichage Matrice »)

Affiche_Mat (A , li, co : entier) 

Ecrire(« Affichage points cols »)

affich_pts_cols (A , li, co : entier) 

Fin

Exemple
1 3 2 3 li=5 co=4
9 6 5 4
A = 11 13 8 7
0 3 1 3
10 9 3 5

Tmax = 3 9 13 3 10 Tmin = 0 3 1 3
Les points cols sont : A[1,2] A[1,4] A[4,2] A[4,4]

Deuxième méthode :

Cette méthode consiste à construire deux « matrices d’aide » MAX et MIN, de mêmes dimensions
que A. MAX contiendra des 1 aux positions correspondant dans A à un maximum sur une ligne, le
reste étant des zéros. De même MIN contiendra des 1 aux positions correspondant dans A à un
minimum sur une colonne, le reste étant des zéros. Il suffira alors de comparer ces matrices : les
positions contenant un 1 dans les deux matrices à la fois seront celles des points-cols dans A.

Pour la deuxième méthode l’algorithme reste le même, on ne modifie que la procédure


affich_pts_cols

Procédure affich_pts_cols (A :tab, li: entier, co : entier) 

Var

MAX, MIN : tab


nb_pts_cols, Minc, Maxl, i, j : entier

Début

/* Construction de la matrice d’aide MAX */

Pour i de 1 à li faire

Maxl = max_li (A, li, co, i)

Pour j de 1 à co faire

Si(A[i][j] = Maxl)

Alors MAX[i][j] 1

Sinon MAX[i][j] 0

Fsi

Fin pour

Fin pour

/* Construction de la matrice d’aide MIN */

Pour j de 1 à co faire

Minc = min_co (A, li, co, j)

Pour i de 1 à li faire

Si(A[i][j] = Minc)

Alors MIN[i][j] 1

Sinon MIN[i][j] 0

Fsi

Fin pour

Fin pour

/* Affichage des points cols */

Ecrire (" Les points-cols sont :")

nb_pts_cols = 0

Pour i de 1 à li faire

Pour j de 1 à co

Si (MAX[i][j]=1 et MIN[i][j]=1)

Alors

Écrire (« Ligne », i, « Colonne » j, « Point Col = », A [i, j])


nb_pts_cols  nb_pts_cols +1

Fsi

Fin pour

Fin pour

Si (nb_pts_cols = 0) alors

Ecrire (« Il n’y a aucun point Col »)

Fin

Exemple
1 3 2 3
9 6 5 4
A = 11 13 8 7
0 3 1 3
10 9 3 5

0 1 0 1 0 1 0 1
1 0 0 0 0 0 0 0
MAX = 0 1 0 0 MIN = 0 0 0 0
0 1 0 1 1 1 1 1
1 0 0 0 0 0 0 0

Vous aimerez peut-être aussi