Vous êtes sur la page 1sur 10

Correction srie : Tableaux 2 dimensions

Srie dexercices : Les tableaux deux dimensions


Remarques :
1. Les commentaires sont crits en vert aprs deux slaches Exemple : //ceci est un commentaire 2. On peut dclarer un tableau directement dans lentte du sous programme. Cas 1 : procdure afficher (A : tableau [1..NMAX, 1..NMAX] dentiers) Avec, NMAX : est une constante qui signifie le nombre maximale de lignes et de colonnes et doit tre dclare dans le programme principal. Cas 2 : procdure afficher (A : tableau [1..100, 1..100] dentiers) Dans ce cas, NMAX nest pas dclare dans le programme principal, donc on crit explicitement sa valeur dans la dclaration. 3. Excuter manuellement lalgorithme pour le comprendre mieux.

Exercice n1 : EXEMPLE : n = 6 indice 0 1 2 3 4 5 6 0 1 1 1 1 1 1 1 1 1 2 3 4 5 6 2 1 3 6 10 15 3 4 5 6

1 4 1 10 5 1 20 15 6

1
1

said_anis@htomail.com http://prepa-info.blogspot.com

Correction srie : Tableaux 2 dimensions

Procdure trianglePascal (VAR M : tableau [0..NMAX, 0..NMAX] dentiers, n : entier) Var Dbut Si (n >= 0 et n <NMAX) alors Pour i de 0 n faire //lignes M [i, 0] 1 Pour j de 1 (i-1) faire M [i, j] M [i-1, j-1] + M [i-1, j] Fin pour M [i, i] 1 Fin pour Fin si Fin Exercice n2 : Fonction symMat (M : tableau [1..NMAX, 1.. NMAX] dentiers ; L, C : entier) : boolen Var i, j : entier Dbut Pour i de 1 (L-1) faire Pour j de (i+1) C faire Si (M [i, j] M [j, i]) alors Retourner (faux) Fin si Fin pour Fin pour // si on termine le parcourt de toute la matrice sans retourner "f aux" on renvoie "vrai" Retourner (vrai) Fin Remarque : Pour que la matrice soit triangulaire infrieure, il faut que toutes les cases au dessus de la diagonale sont nulles (=0) et au moins une des cases de la diagonale ou bien de celles se trouvant au dessous de la diagonale soit diffrente de zro. i, j : entier

said_anis@htomail.com http://prepa-info.blogspot.com

Correction srie : Tableaux 2 dimensions

fonction trinagInf (M : tableau [1..NMAX, 1.. NMAX] dentiers ; L, C : entier) : boolen Var i, j : entier Dbut Pour i de 1 (L-1) faire Pour j de (i+1) C faire // Il faut que toutes les cases du triangle suprieur (au dessus de la diagonale) gales zro, sinon on retourne "f aux" Si (M [i, j] 0) alors Retourner (faux) Fin si Fin pour Fin pour // Il faut tester aussi que au moins une des case de la diagonale est diffrente de zro, //si on trouve au moins une case 0, on retourne "vrai" Pour i de 1 L faire Si (M [i, j] 0) alors Retourner (vrai) Fin si Fin pour // Si toutes les cases parcourues sont nulles, on applique la fonction symMat, pour vrifier que le triangle infrieur de la matrice nest pas nul aussi // si symMat (M, L, C) renvoie "vrai", donc toutes les cases = 0, alors on retourne non vrai // et si symMat (M, L, C) renvoie "faux", donc il y a au moins une case 0, alors on retourne non faux Retourner (non symMat (M, L, C)) Fin

said_anis@htomail.com http://prepa-info.blogspot.com

Correction srie : Tableaux 2 dimensions

Exercice n3 : fonction magiqueMat (M : tableau [1..NMAX, 1.. NMAX] dentiers ; n : entier) : boolen Var i, j, sd, sl, sc magique Dbut // Somme de la diagonale sd 0 Pour i de 1 n faire sd sd + M [i, i] Fin pour magique vrai i1 Rpter // Somme de la ligne n i sl 0 Pour j de 1 n faire sl sl + M [i, j] Fin pour Fin Fin si Jusqu (magique = faux ou i > n) Retourner (magique) sinon magique faux // Somme de la colonne n i sc 0 Pour j de 1 n faire sc sc + M [j, i] Fin pour Si (sd = sc et sl = sd) alors ii+1 : entier : boolen

Exercice n4 : Raliser le transpos dune matrice revient permuter ses lignes et ses colonnes. Afin dviter dutiliser une autre matrice, la matrice dorigine doit tre carre. Cas dune matrice carre : Permutation par rapport la diagonale principale. Cas dune matrice quelconque : Exemple : L = 2, C=3 L = 3, C= 2 on doit crer une autre matrice rsultante 1 2 1 2 1 2

1 1 1 2 2 2 3 3 3

1 2 3 1 2 3 1 2 3

1 1 1 2 2 2

said_anis@htomail.com http://prepa-info.blogspot.com

Correction srie : Tableaux 2 dimensions

// Cas dune matrice carre Procdure transposeMat (VAR M : tableau [1..NMAX, 1.. NMAX] dentiers ; n, m : entier) Var Dbut Pour i de 1 (n-1) faire Pour j de (i+1) m faire x M [i, j] ; M [i, j] M [j, i] ; M [j, i] x Fin pour Fin pour Fin Exercice n5 : procdure circulanteMat (VAR M : tableau [1..NMAX, 1.. NMAX] dentiers ; n : entier) Var i, j : entier Dbut Pour j de 1 n faire M [1, j] j Fin pour Pour i de 2 n faire M [i, 1] M [i-1, n] Pour j de 2 n faire M [i, j] M [i-1, j-1] Fin pour Fin pour Fin i, j, x : entier

said_anis@htomail.com http://prepa-info.blogspot.com

Correction srie : Tableaux 2 dimensions

Exercice n6 :

Pour i = 1, j = 1, n = 4, q = 2 TA = a*b + c*d = 1*2 + 3*4 = 2 + 12 = 14 TB = e*f + g*h = 1*2 + 3*4 = 2 + 12 = 14 = = = = = = [(a+f)*(b+e)] +[(c+h)*(d+g)]-TA-TB (1+2)*(2+1) + (3+4)*(4+3) -TA-TB 3* 3+7*7 - TA -TB 9+49-TA-TB 58-14-14 30

Ci,j

Vrification avec la mthode classique : Ci,j = a*e + b*f + c*g + d*h = 1*1 + 2*2 + 3*3 + 4*4 =1+4+9+16 =30

said_anis@htomail.com http://prepa-info.blogspot.com

Correction srie : Tableaux 2 dimensions

Procdure WINOGRAD (A, B : MAT ; m, n, p : entier ; VAR C : MAT) : entier Var i, j, k, TA, TB, SQ q Dbut Si (n mod 2 = 0) alors qn/2 Pour i de 1 m faire Pour j de 1 p faire TA 0 TB 0 SQ 0 Pour k de 1 q faire TA TA + A [i, 2*k-1] * A [i, 2*k] TB TB + B [2*k-1, j] * B [2*k, j] SQ SQ + (A [i, 2*k-1] + B [2*k, j]) * (A [i, 2*k] + B [2*k-1, j]) Fin pour C [i, j] SQ-TA-TB Fin pour Fin pour Fin si Fin Exercice n7 : 1) Fonction saisie () : entier Var n : entier Dbut Rptera Ecrire ("n=") Lire (n) Jusqu (n>=2 et n <=10) // (2 n 10) ou n in [2..10] sont interdits Retourner (n) Fin
said_anis@htomail.com http://prepa-info.blogspot.com 7

: entier : rel

Correction srie : Tableaux 2 dimensions

2) Procdure saisie_Mat (VAR M : MAT1, n : entier) Var i, j : entier Dbut Pour i de 1 n faire Pour j de 1 n faire lire (M [i, j]) Fin pour Fin pour Fin 3) // Attention ! // Les composantes de la matrice H sont de type rel // Donc on doit ajouter un autre type de matrice carre de type rel MATR = tableau [1.. NMAX, 1..NMAX] de rels Procdure hilbert (VAR H : MATR, n : entier) Var i, j : entier Dbut Pour i de 1 n faire Pour j de 1 n faire H [i, j] 1 / (i+j-1) Fin pour Fin pour Fin 4) Procdure concat (A : MAT1, H : MATR, VAR B : MAT2, n : entier) Var Dbut Pour i de 1 n faire Pour j de 1 n faire B [i, j] A [i, j] B [i, j+n] H [i, j] Fin pour Fin pour Fin
said_anis@htomail.com http://prepa-info.blogspot.com 8

i, j : entier

Correction srie : Tableaux 2 dimensions

Exercice n 8 : Fonction saisir () : entier Var n : entier Dbut Rpter Ecrire ("n=") Lire (n) Jusqu (n 1 et n NMAX) // (1 n NMAX) ou n in [1..NMAX] sont interdits Retourner (n) Fin Procdure remplir_Mat (VAR A : MAT, n : entier) Var Dbut Pour i de 1 n faire Pour j de 1 n faire A [i, j] i / (j+1) // vous pouvez lui affecter une autre valeur de type rel Fin pour Fin pour Fin Procdure produit_Mat (A : MAT ; m, n : entier ; B : MAT ; p, q : entier ; VAR C : MAT) Var Dbut Si (n=p) alors Pour i de 1 m faire Pour j de 1 q faire C [i, j] 0 Pour k de 1 n faire C [i, j] C [i, j] + A [i, k] * B [k, j] Fin pour Fin pour Fin pour Fin si Fin
said_anis@htomail.com http://prepa-info.blogspot.com 9

i, j

: entier

i, j, k : entier

Correction srie : Tableaux 2 dimensions

Exercice n 9 : // On dclare un nouveau type pour la matrice C de nombre de lignes maximale gale // au nombre maximum de composantes de la matrice A MATCR = // la matrice C est dordre (p,3) = Cp,3 Procdure compacte ( Var i, j, k, nb: entier Dbut C [1, 1] C [1, 2] nb 0 k 1 Pour i de 1 n faire Pour j de 1 m faire Si A [i, j] 0 alors nb nb+1 k k + 1 //prparer la ligne suivante C [k, 1] i C [k, 2] j C [k, 3] A [i, j] Fin si Fin pour Fin pour C [1, 3] nb p k // p est le nombre de lignes final de C Fin n m A : MAT ; n, m : entier ; VAR C : tableau [1..NMAX*NMAX, 1..3] dentiers ; VAR p : entier)

said_anis@htomail.com http://prepa-info.blogspot.com

10

Vous aimerez peut-être aussi