Académique Documents
Professionnel Documents
Culture Documents
O Licence 1 Maths-Info
Département TC MI Année universitaire 2021/2
22
TD # 3 d'Algo 1 (Matrices)
(Matrices)
Ecrire un algorithme qui permet de créer une matrice carrée 4 x 4 telle que chaque élément situé
sur et au dessus de la diagonale soit égal à la somme du numéro de colonne et du numéro de ligne,
tous les autres éléments étant égaux à zéro (matrice triangulaire supérieure).
Exemple, pour n = 4 :
2 3 4 5
0 4 5 6
0 0 6 7
0 0 0 8
Transposer une matrice c’est remplacer les lignes par les colonnes ou inversement :
Exemple :
Exercice 4
-1-
Exercice 5
Soit une matrice carrée d’entiers M (n,n) (prendre n = 4).
Ecrire un algorithme qui permet de :
Compter et afficher le nombre d’éléments de chaque ligne dont la valeur est strictement supérieure
à celle de la diagonale principale ;
Chercher et afficher le nombre maximal trouvé ;
Calculer et afficher la moyenne des valeurs paires strictement positives stockées dans la matrice
M.
Exemple
11 12 9 26 Ligne n° 1 : Nombre = 2
-4 36 18 14 Ligne n° 2 : Nombre = 0
27 31 23 38 Ligne n° 3 : Nombre = 3
46 11 -7 19 Ligne n° 4 : Nombre = 1
Nombre maximal = 3
Moyenne valeurs paires = 27,14 ((12+26+36+18+14+38+46)/7)
1/2
1) Syntaxe de la dé
déclaration
claration d’
d’un type matrice en Pascal:
La déclaration des types non standards (définis par l’utilisateur) se fait en les précédant du mot réservé
TYPE.
Ainsi, la déclaration d’un type matrice se fait selon la syntaxe donnée ci-dessous :
2) Syntaxe de la dé
déclaration d’
d’une variable de type matrice :
Var
M : tmat ;
Ou bien
Var
M : array[1..10,1..5] of integer ;
L'élément d'indices i et j d'une matrice M est désigné par M[i,j]. Exemple : M[3,1]:= M[2,3];
-2-
Corrigé TD # 3 matrices
Exercice 1 :
Program td3exo1 ; algorithme td3exo1 ;
Const N = 4 ; Const N = 4 ;
Var MI : array [1..N, 1..N] of integer ; Var MI : tableau (N,N) de entier ;
i,j : integer ; i, j : entier;
Begin debut
for i := 1 to N do pour i ← 1 à N faire
for j := 1 to N do pour j ← 1 à N faire
if i = j then MI[i,j] := 1 si i = j alors MI(i,j) ← 1
else MI[i,j] := 0 ; sinon MI(i,j) ← 0 ;
Writeln(‘ La matrice identité ‘, N, ‘x’, N) ; ecrire (‘ La matrice identité ‘, N, ‘x’, N) ;
for i:=1 to n do pour i ← 1 à N faire
begin pour j ← 1 à N faire
for j:= 1 to n do ecrire (‘MI(‘, i , ’,’ , j ,’)=’, MI(i,j));
write (MI[i,j], ‘ ‘); fin.
writeln; {saut de ligne}
end;
end.
Exercice 2 :
Program td3exo2 ; algorithme td3exo2 ;
Const N = 4 ; Const N = 4 ;
Var MT : array [1..N, 1..N] of integer ; Var MT : tableau (N, N) de entier ;
i,j : integer ; i, j : entier;
Begin debut
for i := 1 to N do pour i ← 1 à N faire
for j := 1 to N do pour j ← 1 à N faire
if i <= j then MT[i,j] := i+j si i < = j alors MT(i,j) ← i + j
else MT[i,j] := 0 ; sinon MT(i,j) ← 0 ;
Writeln(‘ La matrice triangulaire ‘, N, ‘x’, N) ; ecrire (‘ La matrice triangulaire ‘, N, ‘x’, N) ;
for i:=1 to n do pour i ← 1 à N faire
begin pour j ← 1 à N faire
for j:= 1 to n do ecrire (‘MT(‘, i , ’,’ , j ,’)=’, MT(i,j));
write (MT[i,j], ‘ ‘); fin.
writeln; {saut de ligne}
end;
end.
1
Exercice 3 :
Program td3exo3 ; algorithme td3exo3 ;
Const N = 3; Const N = 3 ;
Var M : array [1..N, 1..N] of integer ; Var M : tableau (N, N) de entier ;
i,j, temp, max : integer ; i, j,temp,max : entier;
Begin debut
Writeln(‘ lecture de la matrice ‘, N, ‘x’, N) ; ecrire (‘ lecture de la matrice ‘, N, ‘x’, N) ;
for i := 1 to N do pour i ← 1 à N faire
for j := 1 to N do pour j ← 1 à N faire
begin debut
writeln (‘ donner la valeur de la case (‘, i, ‘,’, j, ’)’) ; ecrire (‘ donner la valeur de la case (‘, i, ‘,’, j, ’)’) ;
readln (M[i,j]) ; lire (M(i,j)) ;
end ; fin;
{transposition de la matrice} {transposition de la matrice}
for i := 1 to N do pour i ← 1 à N faire
for j := 1 to N do pour j ← 1 à N faire
if i < j then begin si i < j alors debut
temp := M[i,j];
temp ← M(i,j);
M[i,j] := M[j,i] ;
M(i,j) ← M(j,i) ;
M[j,i] := temp ;
End ; M(j,i) ← temp ;
Writeln(‘ La matrice transposée est‘) ; fin ;
for i:=1 to n do
begin ecrire (‘ La matrice transposée est ‘) ;
for j:= 1 to n do pour i ← 1 à N faire
write (M[i,j], ‘ ‘); pour j ← 1 à N faire
writeln; {saut de ligne} ecrire (‘M(‘, i , ’,’ , j ,’)=’, M(i,j));
end; {recherche du maximum}
max := M[1,N]; max ← M(1,N);
for i:= 2 to N do pour i ← 2 à N faire
if M[i, N-i+1] > max si M(i, N-i+1) > max
then max := M[i, N-i+1]; alors max ← M(i, N-i+1);
write(‘le maximum des éléments de la diagonale inverse
est ‘, max) ; ecrire (‘le maximum des éléments de la diagonale
end. inverse est ‘, max) ;
Exercice 4 : fin.
Program td3exo4 ;
Const NL = 4 ;
NC = 3 ;
Begin
Writeln(‘ lecture de la matrice ‘, NL, ‘x’, NC) ;
for i := 1 to NL do
for j := 1 to NC do
begin
writeln (‘ donner la valeur de la case (‘, i, ‘,’, j, ’)’) ;
readln (M[i,j]) ;
end ;
VS[1] := M[1,1] ;
VS[2] := M[1,1] ;
2
S := 0 ;
for i := 1 to NL do
for j := 1 to NC do
begin
if M [i,j] > VS[1] then VS[1] := M[i, j] ;
if M [i,j] < VS[2] then VS[2] := M[i, j] ;
s := s + M[i, j] ;
end ;
VS[3] := s / (NL * NC) ;
writeln ('maximum matrice est ', vs[1] :5 :2);
writeln ('minimum matrice est ', vs[2] :5 :2);
write (' moyenne matrice est ', vs[3] :5 :2);
end.
Exercice 5 :
Program TD3Exo5 ;
Const n= 4 ;
Var M : array[1..n,1..n] of integer ;
i,j: integer;
nvp, svp,cpt,max: integer;
mvp: real;
begin
for i:=1 to n do
for j:= 1 to n do
begin
writeln (‘M(‘, i ,’,’, j ,’)=?’);
readln (M[i,j]);
end;
max := 0;
for i:=1 to n do
begin
cpt:= 0;
for j:= 1 to n do
if M[i,j] >M[i,i] then cpt := cpt + 1;
writeln(‘Ligne n°’, i, ‘: Nombre =’, cpt);
if cpt > max then max := cpt ;
end;
writeln (‘Nombre maximal = ‘, max);
svp := 0;
nvp := 0;
for i:=1 to n do
for j:= 1 to n do
if (M[i,j] > 0) and (M[i,j] mod 2 = 0)
then begin
nvp := nvp + 1;
svp := svp + M[i,j] ;
end;
if nvp = 0 then write (‘ pas de valeurs paires strictement positives’)
else begin
mvp := svp / nvp;
write (‘Moyenne valeurs paires =’, mvp) ;
end ;
end.