1 0 J A N V I E R 2 0 1 4 Matrice Exercice 1 : Soit la matrice carrée M suivant

1 0 J A N V I E R 2 0 1 4 Matrice Exercice 1 : Soit la matrice carrée M suivante : 1 1 1 1 1 1 1 1 1 1 2 3 4 5 6 7 8 1 3 6 10 15 21 1 4 10 20 35 1 5 15 35 1 6 21 1 7 1 8 1 {****** affichage de la matrice *******} procedure affiche(m:mat;n:integer); begin for i:=1 to n do begin for j:=1 to n do if(j<=n-i+1) then write(m[i,j]:5) else write(' ':5); writeln; end; end; {*********** pp ********** } begin repeat write('Saisir N: ');readln(n); until (n in [1..10]); remplir(m,n); affiche(m,n); end. program ex1; uses wincrt; type mat=array[1..10,1..10] of integer; var m:mat; n,i,j:integer; {******* Somme de 1 à j *******} function somme(m:mat;i,j:integer):integer; var s,k:integer; begin s:=0; for k:=1 to j do s:=s+m[i,k]; somme:=s; end; {******** Remplissage MATRICE *******} procedure remplir(var m:mat;n:integer); begin {***** les elts de ligne 1 sont à 1 ****} for J:=1 to n do m[1,j]:=1; for i:=2 to n do for j:=1 to n-i+1 do if(j=1)then m[i,j]:=1 else m[i,j]:=somme(m,i-1,j); 5 ? 1 0 J A N V I E R 2 0 1 4 end; Exercice 2 : Program ex2; uses wincrt; type mat= array[1..10,1..10] of integer; var m:mat ; n,i,j:integer; {******** Affichage ********} procedure affiche(m:mat; n:integer); begin for i:=1 to n do begin for j:=1 to n do if(m[i,j]=0)then write(' ':5) else write(m[i,j]:5); writeln; end; end; procedure remplir(var m:mat; n:integer); begin for i:=1 to n do for j:=n-i+1 to n do if ((j=n) or (j=n-i+1)) then m[i,j]:=1 else if ((i>2) and (m[i-1,j]=1)and (m[i,j-1]=1)) then m[i,j]:=3 else m[i,j]:=m[i,n-i+1]+m[i,j-1]+m[i-1,j]; end; A compléter {********* pp ********} begin repeat write('Saisir N: '); readln(n); until (n in [1..10]); remplir(m,n); affiche(m,n); end. 5 P1 1 1 1 1 3 1 1 3 7 1 1 3 7 15 1 1 3 7 15 31 1 1 3 7 15 31 63 1 1 1 ? 1 0 J A N V I E R 2 0 1 4 Exercice 3 : On désire remplir une matrice M carré de taille n x n (n est un entier donné ≥ 2) par les éléments de deux triangles de pascal : Le premier triangle (en gris) : Triangle de Pascal vu en cour. Le deuxième triangle (en blanc) : Triangle de Pascal mis à l’envers. Pour N=6 : program ex3; uses wincrt; type mat=array[1..10,1..10] of integer; var m:mat; n,i,j:integer; {****** Remplissage triangle haut *******} procedure remplir1(var m:mat;n:integer); begin for i:=1 to n do for j:=1 to i do if(j=1)or(j=i)then m[i,j]:=1 else m[i,j]:=m[i-1,j]+m[i-1,j-1]; end; {****** Remplissage triangle bas *******} procedure remplir2(var m:mat;n:integer); begin for i:=n downto 1 do for j:=n downto i do if(j=n)or(j=i)then m[i,j]:=1 else m[i,j]:=m[i+1,j]+m[i+1,j+1]; end; {******** affichage matrice *****} procedure affiche(m:mat;n:integer); begin for i:=1 to n do begin for j:=1 to n do write(m[i,j]:5); writeln; end; end; {********* pp *********} begin repeat write('saisir N: '); readln(n); until(n in [1..10]); remplir1(m,n); remplir2(m,n); affiche(m,n); end. Exercice 4 : 5 1 5 10 10 5 1 1 1 4 6 4 1 M 1 2 1 3 3 1 1 3 3 1 2 1 1 4 6 4 1 1 1 5 10 10 5 1 1 0 J A N V I E R 2 0 1 4 Pour N=6 : On désire former une matrice M spirale de taille n x n (n est un entier donné ≥ 2) comme le montre le figure suivant : A compléter program ex4; uses wincrt; type mat=array[1..10,1..10]of integer; var m:mat; n,i,j,k:integer; {********* Matrice spirale *******} procedure remplir(var m:mat;n:integer); begin {***** compteur k initialisé à 1 ****} k :=1 ; for i:=1 to n do if(i mod 2=1)then for j:=1 to n do begin m[i,j]:=k; k:=k+1; end else for j:=n downto 1 do begin m[i,j]:=k; k:=k+1; end; end; {******** affichage matrice *****} procedure affiche(m:mat;n:integer); begin for i:=1 to n do begin for j:=1 to n do write(m[i,j]:5); writeln; end; end; {********* pp *********} begin repeat write('saisir N: '); readln(n); until(n in [1..10]); remplir(m,n); affiche(m,n); end. Exercice 5 : (Extrait bac contrôle 2010) On propose d’écrire un programme permettant de : Pour N=6 : 5 1 2 3 4 5 6 12 11 10 9 8 7 M 13 14 15 16 17 18 36 35 34 33 32 31 1 0 J A N V I E R 2 0 1 4 - Remplir une matrice carrée M de taille (nxn) selon le principe décrit ci-dessous. N est un entier donné (2≤N≤10). Le remplissage de la matrice M est décrit comme suit : 1) Le remplissage de la matrice M, doit tenir compte des règles suivantes :  La première ligne de M est remplie de façon aléatoire (au hasard), par des chiffres de 1 à 9.  A partir de la deuxième ligne de la matrice M, un élément quelconque M[l,c] est déterminé en faisant la somme des éléments de la ligne (l-1), en commençant à partir de l’élément M[l-1,c].  Le nombre des cases remplies pour une ligne est : n-l+1. Exemple : . M[2,2] = 5 + 1 + 8 + 3 +1 =18 .M[3,4] = 12 + 4 = 16 program ex5; uses wincrt; type mat=array[1..10,1..10] of integer; var m:mat; n,i,j:integer; {******* Somme de 1 à j *******} function somme(m:mat;i,j:integer):integer; var s,k:integer; begin s:=0; for k:=n-i+1 downto j do s:=s+m[i,k]; somme:=s; end; {******** Remplissage MATRICE *******} procedure remplir(var m:mat;n:integer); begin {*** remplissage aléatoire de la 1er ligne ****} randomize; for J:=1 to n do m[1,j]:=random(9)+1; {******* les autres elts de la matrice***} for i:=2 to n do for j:=n-i+1 downto 1 do m[i,j]:=somme(m,i-1,j); end; {****** affichage de la matrice *******} procedure affiche(m:mat;n:integer); begin for i:=1 to n do begin for j:=1 to n do if(j<=n-i+1) then write(m[i,j]:5) else write(' ':5); writeln; end; end; {*********** pp ********** } begin repeat write('Saisir N: ');readln(n); until (n in [1..10]); remplir(m,n); affiche(m,n); end. Exercice 6 : Ecrire un programme qui permet d’afficher à l’écran les deux triangles de Pascal suivants pour un entier N (2≤N≤10) donné 5 1 2 3 4 5 6 1 2 5 1 8 3 1 2 20 18 13 12 4 3 67 47 29 16 4 159 92 45 5 296 137 6 433 1 0 J A N V I E R 2 0 1 4 Exemple : Pour N=6 le programme affiche la figure suivante : program ex6; uses wincrt; type mat=array[1..10,1..10] of integer; var m:mat; n,i,j:integer; {****** Remplissage triangle1 *******} procedure remplir1(var m:mat;n:integer); begin for i:=1 to n do for j:=1 to i do begin if(j=1)or(j=i)then m[i,j]:=1 else m[i,j]:=m[i-1,j]+m[i-1,j-1]; m[i,2*n-i]:=m[i,j]; end; end; {******** affichage matrice *****} procedure affiche(m:mat;n:integer); begin for i:=1 to n do begin for j:=1 to 2*n-1 do if(j>i)and(j<2*n-i)then write(' ':5) else write(m[i,j]:5); writeln; end; end; {********* pp *********} begin repeat write('saisir N: '); readln(n); until(n in [1..10]); remplir(m,n); affiche(m,n); end. Exercice 7 : On désire remplir une matrice M carré de taille n x n (1≤n≤15 et impair) par des étoiles comme le montre la figure. Pour N=7 : 5 1 1 1 1 1 1 1 2 1 1 2 1 1 3 3 1 1 3 3 1 1 4 6 4 1 1 4 6 4 1 1 5 10 10 5 1 5 10 10 5 1 1 0 J A N V I E R 2 0 1 4 Traduction en Pascal program ex7; uses wincrt; type mat=array[1..15,1..15]of char; var m:mat; n,i,j:integer; {******** initialisation de la matrice ****} procedure init(var m:mat; n:integer); begin for i:=1 to n do for j:=1 to n do m[i,j]:='.'; end; {*********** Affichage matrice ********} procedure affiche(m:mat; n:integer); begin for i:=1 to n do begin for j:=1 to n do write(m[i,j]:5); writeln; end; end; Pour N=7 : {*** Remplissage des deux triangles ***} procedure remplir(var m:mat; n:integer); begin for i:=1 to (n div 2) + 1 do for j:=(n div 2)-i+2 to (n div 2)+i do begin m[i,j]:='*'; m[n-i+1,j]:='*'; end; end; {******** programme principal ******} begin repeat write('Saisir N: '); readln(n); until (n>=2) and (n mod 2<>0); init(m,n); remplir(m,n); affiche(m,n); end. Exercice 8 : On désire remplir une matrice M carré de taille n x n (1≤n≤15 ) par des étoiles comme le Pour N=4 : 5 * * * * M * * * * * * * * * * * * * * * * * * * * * 1 0 J A N V I E R 2 0 1 4 montre la figure. Traduction en Pascal program ex8; uses wincrt; type mat=array[1..15,1..15]of char; var m:mat; n,i,j:integer; {******** initialisation de la matrice ****} procedure init(var m:mat; n:integer); begin for i:=1 to 2*n-1 do for j:=1 to n do m[i,j]:='.'; end; {*********** Affichage matrice ********} procedure affiche(m:mat; n:integer); begin for i:=1 to 2*n-1 do begin for j:=1 to n do write(m[i,j]:5); writeln; end; end; {******** Remplissage des deux triangles *****} procedure remplir(var m:mat; n:integer); begin for i:=1 to n do for j:=1 to i do begin m[i,j]:='*'; m[2*n-i,j]:='*'; end; end; {******** programme principal ******} begin repeat write('Saisir N: '); readln(n); until (n>=2); init(m,n); remplir(m,n); uploads/s1/ exercices-matrice-corrige 1 .pdf

  • 36
  • 0
  • 0
Afficher les détails des licences
Licence et utilisation
Gratuit pour un usage personnel Attribution requise
Partager
  • Détails
  • Publié le Aoû 11, 2022
  • Catégorie Administration
  • Langue French
  • Taille du fichier 0.1417MB