Vous êtes sur la page 1sur 5

U.M.M.T.

O Licence 1 Maths-Info
Département TC MI Année universitaire 2021/2
22

TD # 3 d'Algo 1 (Matrices)
(Matrices)

Exercice 1 Matrice identité


Ecrire un algorithme permettant de créer une matrice Identité de dimensions 3 x 3 et constituée de
1 sur la diagonale principale et de 0 partout ailleurs.

Exercice 2 Matrice triangulaire

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

Exercice 3 Transposition d’une matrice carrée

Transposer une matrice c’est remplacer les lignes par les colonnes ou inversement :
Exemple :

devient après transposition

Ecrire un algorithme qui :

• Transpose une matrice lue et affiche la matrice transposée.


• Recherche le maximum des éléments de la diagonale inverse de la matrice transposée.

Exercice 4

Soit une matrice d’entiers M de taille NL x NC (par exemple : NL = 5 et NC = 8).


Ecrire un programme Pascal qui :
 Lit la matrice M.
 Remplit, à partir de M, le vecteur VS de taille 3 avec respectivement le maximum, le minimum et
la moyenne des valeurs de M.
 Affiche le vecteur VS.

-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

Remarque : Traduire en langage Pascal tous les algorithmes proposés.

Les matrices en Pascal__________________________________

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 :

type <nom_type_matrice> = array[<valminL> ..<valmaxL>,<valminC> ..<valmaxC>] of <type_éléments> ;

exemple : tmat = array[1..10,1..5] of integer ;

2) Syntaxe de la dé
déclaration d’
d’une variable de type matrice :

Vous avez deux choix :

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 ;

Var M : array [1..NL, 1..NC] of integer ;


VS : array [1..3] of real ; {VS[1] = max, VS[2]= min et VS[3]= moyenne de M}
i, j, S : integer ; {S : somme des valeurs de M}

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.

Vous aimerez peut-être aussi