Vous êtes sur la page 1sur 9

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