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