Académique Documents
Professionnel Documents
Culture Documents
P a g e 1 | 11
Solution :
Le schéma des variables d’entrées, variables de sorites et la partie traitement est le suivant :
Lire(n,m);
Pour i←1 à n faire
Pour j←1 à m faire
Lire (A[i,j]);
FinPour;
N M A(i=1..N, j=1..M) FinPour;
Remarque :
Les variables i et j sont des variables de traitement ou intermédiaires, utilisées pour parcourir la matrice A.
1 - Algorithme/programme PASCAL :
A=
5 40 -10 -6
1 8 0 -8
P a g e 3 | 11
For j:=1 2 1
Begin
MIN[j] := A[1, j];
For i:=2 to n do
1
If(A[i, j]<MIN[j])then
1<5 True
MIN[j] := A[i,j] ;
MIN[1] := 1;
End;
For j:=2 2 2
Begin
MIN[j] := A[1, j]; 1 8
For i:=2 to n do
If(A[i, j]<MIN[j])then
8<40 True
MIN[j] := A[i,j] ;
MIN[2] := 8;
End;
For j:=3 2 3
Begin
MIN[j] := A[1, j]; 1 8 -10
For i:=2 to n do
If(A[i, j]<MIN[j])then
0<-10 False
MIN[j] := A[i,j] ;
MIN[3] := -10;
End;
For j:=4 2 4
Begin
MIN[j] := A[1, j]; 1 8 -10 -8
For i:=2 to n do
If(A[i, j]<MIN[j])then
-8<-6 True
MIN[j] := A[i,j] ;
MIN[4] := -8;
End;
WriteLn('Les composantes 1 1 Les composantes de
de la matrice A sont:’); 2 2 la matrice A sont:
For i:=1 to n do 3
Begin
4 5 40 -10 -6
For j:=1 to m do
Write ( A[i,j], ‘ ‘) ; 1 8 0 -8
WriteLn() ;
End;
WriteLn('Les composantes 1 Les composantes de
de vecteur Min sont:’); 2 vecteur Min sont:
For j:=1 to m do 3
Write (MIN[j] , ’ ‘ ) ;
4 1 8 -10 -8
End.
P a g e 4 | 11
5 - Ré-écrire le programme en remplaçant la boucle Pour par la boucle Tantque dans la partie
traitements et par la boucle Répéter dans la partie sorties.
Programme PASCAL
program Matrice;
var
i,j,n,m :integer;
A : array[1..100, 1..100] of integer;
MIN : array[1..100] of integer;
begin
{Les entrées}
WriteLn('Donner le nombre des lignes et des colonnes de A');
Readln (n,m);
WriteLn('Donner les composantes de la matrice A');
For i:=1 to n do
For j:=1 to m do
read (A[i,j]) ; {Read pour lire dans la même ligne}
{Les traitements}
j:=1;
while (j<=m) do
Begin
MIN[j] := A[1, j];
i:=2;
while (i<=n) do
Begin
If(A[i, j]<MIN[j])then
MIN[j] := A[i,j] ;
i:=i+1;
End;
j:=j+1;
End;
{Les sorties}
WriteLn('Les composantes de la matrice A sont: ');
i:=1 ;
repeat
j:=1;
repeat
Write ( A[i,j] , ‘ ‘) ; {Afficher dans la même ligne}
j:=j+1 ;
until (j>m) ;
WriteLn() ; {Sauter la ligne}
i:=i+1 ;
until (i>n) ;
WriteLn('Les composantes de vecteur Min sont: ');
j :=1 ;
repeat
Write (MIN[j] , ’ ‘ ) ; {Afficher dans la même ligne}
j:=j+1 ;
until (j>m) ;
End.
P a g e 5 | 11
Exercice N°02 :
Soit M une matrice carrée de taille N x N et de type réel.
1. Écrire un programme pascal qui permet de calculer le produit des composantes non nulles de la diagonale
principale de la matrice M.
2. Vérifier si la matrice M est symétrique.
Rappel : Une matrice M est symétrique si M[i, j] = M[j, i] pour tout i et j.
Solution :
1.
Le schéma des variables d’entrées, variables de sorites et la partie traitement est le suivant :
Lire(N) ;
Pour i←1 à N faire
Pour j←1 à N faire
Lire( M[i, j] )
Fin-Pour;
N M M(i=1..N, j=1..N) Fin-Pour;
P←1;
Pour i←1 à N faire
i Si ( M[i,i] <> 0 ) alors
Traitement P ← P* M[i,i] ;
j Fin-si;
Fin-Pour;
Algorithme/programme PASCAL :
Fin. End.
Le schéma des variables d’entrées, variables de sorites et la partie traitement est le suivant :
Lire(N) ;
Pour i←1 à N faire
Pour j←1 à N faire
Lire( M[i, j] ) ;
Fin-Pour;
N M M(i=1..N, j=1..N) Fin-Pour;
Test ← Vrai ;
Pour i←1 à N faire
i Pour j←1 à N faire
Si (M[i,j] <> M[j,i]) Alors
j Traitement Test ← Faux ;
Test Fin-Si;
Fin-Pour;
Fin-Pour;
Algorithme/programme PASCAL :
Début Begin
{Les entrées} {Les entrées}
Lire(N) ; Writeln('Donner la dimension de la matrice carrée:');
Pour i←1 à N faire Read(N) ;
Pour j←1 à N faire Writeln('Donner les composantes de la matrice A : ');
Lire( M[i, j] ) ; For i :=1 to N do
Fin-Pour; For j :=1 to N do
Fin-Pour; read( M[i, j] );
P a g e 7 | 11
Test ← Vrai ; Test := True ;
For i:=1 to N do
Pour i←1 à N faire Begin
Pour j←1 à N faire For j:=1 to N do
Si (M[i,j] <> M[j,i]) Alors If (M[i,j] <> M[j,i]) Then
Test ← Faux ; Test := False ;
Fin-Si; End;
Fin-Pour;
Fin-Pour; {Les sorties}
If (Test = True) then
{Les sorties} Writeln ('M est une matrice symétrique')
Si (Test = Vrai) Alors Else
Écrire ('M est une matrice symétrique') ; Writeln ('M est une matrice non-symétrique') ;
Sinon End.
Écrire ('M est une matrice non-symétrique') ;
Fin-Si ;
Fin.
Solution :
Le transposé d'une matrice A d'ordre N x M est un matrice B d'ordre M x N.
Chaque ligne de A devient une colonne de B (ou chaque colonne de A devient une ligne pour B). Chaque case
B[i, j] correspond à la case A[j, i] tel que : i=1, …, M et j=1, …, N
B(i=1..M, j=1..N)
Écrire(‘La matrice B Transposée de A est: ’)
Pour i←1 à m faire
Pour j←1 à n faire
Écrire ( B[i,j])
Finpour
Finpour
Algorithme/programme PASCAL :
Solution :
1. Pour répondre à la première question, nous suivons la logique suivante :
On suppose que la première composante (A[1,1]) de la matrice A est le minimum, sa position est (imin=1,
jmin=1), puis on parcours les autres composantes de la matrice A et de les comparer à la première
composante, dès qu’un élément est inférieur au minimum, ce dernier sera mis à jour ainsi que sa position
imin (ligne) et jmin (colonne).
Le schéma des variables d’entrées, variables de sorites et la partie traitement est le suivant :
P a g e 9 | 11
Lire(N, M)
Pour i←1 à N faire min ← A[1, 1]
Pour j←1 à M faire imin ← 1
Lire( A[i, j] ) jmin ← 1
Fin-Pour Pour i←1 à N faire
N M A(i=1..N, j=1..M) Fin-Pour Pour j←1 à M faire
Si A[i, j] < min alors
min ← A[i, j]
imin ← i
i jmin ← j
Traitement Fin-Si
j Fin-Pour
Fin-Pour
Algorithme/programme PASCAL :
Algorithme/programme PASCAL :
P a g e 11 | 11