Vous êtes sur la page 1sur 4

Exercice 7 : Produit de deux Matrices

1) Programme PASCAL qui calcul C(N×L) = A(N×M) × B(M×L)

N, M, L,
A[,], B[,]

i, j,k
C[,]

La partie Traitement

Pour i 1 à N faire
Pour j 1 à L faire
C[i,j] 0

Pour k 1 à m faire
C[i,j] C[i,j] + A[i,k]*B[k,j] ;
Fin-Pour
Fin-Pour
Pour-Pour

Le programme PASCAL :
2) Pour réaliser le traitement demandé :
- Ajouter la déclaration de la matrice D
- Réalser la lecture au debut du programme de la matrice D, et réaliser l’affichage
de la matrice D à la fin du programme
- Copier le code du multiplication AxC et adapter et modifier le code pour qu’il
réalise le calcul DxD

Re-Copier la partie Traitement (ce n’est pas la meilleur da façon de réutiliser le


code)
3) Ecriture de la procédure Produit_Matrice

Appel (Transmission de
paramètres effectifs vers les
N, M, L, paramètres formels)
A[,], B[,] N, M, L, A[,], B[,]
i, j

i,j,k Traitement du SP

C[,] C[,]

Retour du Résultat : C[,]

Le programme PASCAL :
{Partie 01 : Entête du programme}
Program Produit_2_matrices_Q02;
uses wincrt;

{Partie 02 : Déclaraiton}
Type
MATRICE = Array[1..10, 1..10] of real;
Var
A, B, C : MATRICE;
N, M, L : integer;
i, j, k : integer;
Procedure Poduit_Matrice(N, M, L : integer; A, B : MATRICE; var C:MATRICE);
var i,j, k : integer;
Begin
for i:=1 to N do
for j:=1 to L do
begin
C[i,j] := 0;
for k:=1 to m do
C[i,j] := C[i,j] + A[i,k]*B[k,j] ;
end;
End;

{Partie 03 : La parite Inscrution(s) : le corps du programme}


BEGIN{Le début des instructions du programme principal}
{Entrées ....}
Writeln('-*-*-* Saisie de la matrice A -*-*-*');
Repeat
write('Donner la taille de la matrice A(NxM) : ');
Read(N, M);{On peut donner deux valeurs séparer par ESPACER}
Until (2<=N) AND (N<=10) AND (2<=N) AND (N<=10);
Writeln('Donner les valeurs (composantes) de la matrice A(',N,'x',M,') : ');
for i:=1 to N do
for j:=1 to M do
Read(A[i, j]);

Writeln('-*-*-* Saisie de la matrice B -*-*-*');


Repeat
write('Donner le nombre de colonnes de la matrice B (i.e. : L) : ');
Read(L);
Until (2<=L) AND (L<=10);
Writeln('Donner les valeurs (composantes) de la matrice B(',M,'x',L,') : ');
for i:=1 to M do
for j:=1 to L do
Read(B[i, j]);

{Traitement ....}

Poduit_Matrice(N, M, L, A, B, C);
{Sorites ...}
Writeln('Le résultat du Produit A(',N,'x',M,') x B(',M,'x',L,') =
C(',M,'x',L,')');
for i:=1 to N do
begin
for j:=1 to L do
write(C[i, j]:9:2);
writeln;{Préparer la linge suivante}
end;
END.{La fin du programme principal}

4) Pour réaliser la matrice D(NxN) et le résultat sera dans la matrice F(NxN), il suffit
de faire l’appel à la procédure Produit_Matrice :

Produit_Matrice(N, N, N, D, D, F) ;

Vous aimerez peut-être aussi