TD N°11 Structures de données : Tableau 1D (Correction) 1. Déclarer un tableau de 9 réels et l’initialiser avec la valeur 0. Algo Ex1 TYPE VAR Tab9 = TABLEAU [1..9] DE Réel; t1 : Tab; i : entier; Debut Pour i=1 A 9 Faire t1[i]0; FinPour; FIN. 2. Écrire l’algorithme d’un sous-programme RemplirTableau qui remplit un tableau de 9 notes (réelles) avec des valeurs demandées à l’utilisateur. // Le paramètre T est de type Résultat sinon les valeurs saisies seront perdues //Les valeurs initiales du tableau n'ont pas d'importance car ils seront écrasées. PROCEDURE RemplirTableau (Résultat T : Tab9) Var i = Entier; Debut Pour i=1 A 9 Faire Ecrire("Donnez la note N° ", i); Lire(T[i]); FinPour FIN. 3. Écrire l’algorithme d’un sous-programme AfficheTableau qui permet d’afficher les 9 valeurs contenues dans le tableau. PROCEDURE AfficheTableau (Donnée T : Tabl9) Var i = Entier; Debut Pour i=1 A 9 Faire Ecrire(T[i]); FinPour FIN. 4. Écrire l’algorithme d’un sous-programme RechercheMin qui permet de retourner l’indice de la plus petite valeur contenue dans le tableau. FONCTION RechercheMin(Donnée T : Tab) : Entier VAR Imin , i : entier; Debut Imin = 1; Pour i=2 A 9 Faire Si T(i)<T(Imin) Alors Imini; FinSi FinPour RETOURNE Imin; FIN. 5. Écrire l’algorithme d’un sous-programme SommeTableau calculant la somme des valeurs du tableau précédent : SommeTableau = 126. FONCTION SommeTableau(Donnée T : Tab) : Réel VAR i : entier; S : Réel; Debut S = 0; Pour i=1 A 9 Faire S S + T[i] ; FinPour RETOURNE S; FIN. 6. Écrire l’algorithme d’un sous-programme permettant de renverser le contenu d’un tableau contenant des caractères. Avant exécution : T1 : A B C D E F G H I Après exécution : T2 : I H G F E D C B A Solution 1 : Conserver le tableau T1 et mettre le résultat dans T2. PROCEDURE Renverser(Donnée T1 : Tableau [1..9] de Caractère , Résultat T2 : Tableau [1..9] de Caractère ) VAR i : entier ; Debut Pour i = 1 A 9 Faire T2[i]=T1[10-i] FinPour FIN Solution 2 :Ecraser le contenu du tableau T1. PROCEDURE Renverser(DonnéeRésultat T1 : Tableau [1..9] de Caractère) VAR i : entier ; C : Caractère Debut Pour i = 1 A 4 Faire C=T1[i]; T1[i]T1[10-i]; T1[10-i] C; FinPour FIN Structures de données : Tableau 2D (Exercices de TD) 7. Soit M une matrice carrée de taille 5x5 contenant des entiers. Écrire la déclaration et l’initialisation d’une telle structure de données. Algo Ex7 TYPE Mat = TABLEAU [1..5] [1..5] DE Entier; VAR m : Tab; i,j : entier; Debut Pour i=1 A 5 Faire Pour i=1 A 5 Faire Mat[i][j]0; FinPour; FinPour FIN. 8. Écrire un algorithme RemplirMatrice qui propose à l’utilisateur de remplir une matrice M de taille 5x5 PROCEDURE RemplirMatrice (Résultat M : Mat) VAR i,j : entier; Debut Pour i=1 A 5 Faire Pour j=1 A 5 Faire Lire(Mat[i][j]); FinPour; FinPour FIN 9. Écrire deux procédures d’affichage d’une matrice 2D de taille 5*5 : o Affichage_2D_ligne : qui affichera la matrice ligne par ligne. o Affichage_2D_colonne : qui affichera la matrice colonne par colonne. PROCEDURE Affichage2DLigne (Donnée M : Mat) VAR i,j : entier; Debut Pour i=1 A 5 Faire Pour i=1 A 5 Faire Ecrire(M[i][j]); FinPour; FinPour FIN PROCEDURE Affichage2DColonne (Donnée M : Mat) VAR i,j : entier; Debut Pour i=1 A 5 Faire Pour i=1 A 5 Faire Ecrire(M[j][i]); FinPour; FinPour FIN 10. Écrire trois fonctions permettant sur matrice 2D de taille 5*5: o De calculer la somme des éléments d’une ligne (le numéro de la ligne étant passé en paramètre). o De calculer la somme des éléments d’une colonne (le numéro de la colonne étant passé en paramètre) o De calculer la somme des éléments de la diagonale (dans la mesure où la matrice est bien carrée) FONCTION SommeLigne(M : Mat, NumLigne : entier) : Entier; VAR i,S : entier; Debut S0; Pour i=1 A 5 Faire S S+M[NumLigne][i]; FinPour RETOURNE S; FIN. FONCTION SommeCol(M : Mat, NumCol : entier) : Entier; VAR i,S : entier; Debut S0; Pour i=1 A 5 Faire S S+M[i][NumCol]; FinPour RETOURNE S; FIN. FONCTION SommeDiag(M : Mat) : Entier; VAR i,S : entier; Debut S0; Pour i=1 A 5 Faire S S+M[i][i]; FinPour RETOURNE S; FIN.