Vous êtes sur la page 1sur 1

IUT d'Orsay, Département Informatique Algorithmique et C++, 1ère année, 2007-2008

TD n° 5 : Procédures et fonctions avec tableaux


Algorithmique
PARTIE I : tableaux à une dimension
En supposant qu’une constante entière MAX est disponible pour la déclaration des tableaux :

1. Ecrire une fonction nbOccurrences qui retourne le nombre d’occurrences d’un entier donné (passé
en paramètre) dans un tableau unTab contenant nbElts entiers.
2. Ecrire une fonction cherche, à valeur booléenne, qui permet de savoir si un entier donné est
présent dans un tableau d’entiers, en arrêtant le parcours dès que la réponse est trouvée.
3. Ecrire une fonction suiteArithm, à valeur booléenne, qui permet de savoir si un tableau d’entiers
représente une suite arithmétique.
Un tableau d'entiers représente une suite arithmétique si chaque case de ce tableau (sauf la
première) est égale à la précédente plus une certaine valeur, cette valeur restant constante pour tout
le tableau. Par exemple, un tableau contenant les valeurs 7, 11, 15, 19, et 23 contient une suite
arithmétique car chaque case est égale à la précédente plus 4.
4. Ecrire un algorithme dont le but est de tester le bon fonctionnement des fonctions écrites pour les
questions précédentes. Vous disposez également d’une procédure de saisie d’un tableau d’entiers
saisieTab(unTab, nbElts).
5. *Ecrire une fonction symétrique, à valeur booléenne, qui permet de savoir si un tableau d’entiers
est lu de la même façon de gauche à droite et de droite à gauche.

PARTIE II : tableaux à 2 dimensions


En supposant que l'on dispose de la déclaration de type suivante, et que la constante entière MAX a été
déclarée au préalable :
Type T2D = tableau [1, MAX ; 1, MAX] d’entiers
6. Ecrire une procédure sommeTAB2D qui, étant donnés deux tableaux carrés d'entiers ayant le
même nombre de lignes, calcule et renvoie (par le biais des paramètres) le tableau somme de ces
deux tableaux. On suppose que la vérification de l'égalité des nombres de lignes a été faite au
préalable, avant l'appel de la procédure.
Exemple : 1 2 3 1 1 1 2 3 4
4 5 6 + 0 0 0 = 4 5 6
7 8 9 -7 -8 -9 0 0 0

7. Ecrire une fonction suiteArithm2D, à valeur booléenne, qui permet de savoir si un tableau
d'entiers à deux dimensions représente une suite arithmétique pour chacune de ses lignes et
chacune de ses colonnes, et retourne faux sinon (revoir exercice 3). On pourra utiliser un tableau
auxiliaire à une dimension pour stocker les lignes ou les colonnes au fur et à mesure du traitement.
Par exemple, le tableau suivant vérifie cette propriété:

1 3 5 7 9 11 13

2 5 8 11 14 17 20

3 7 11 15 19 23 27

8. *Ecrire une fonction vérifDiagonale, à valeur booléenne, qui permet de savoir si tous les éléments
de la diagonale principale d’un tableau 2D carré d’entiers sont égaux à une valeur donnée, en
arrêtant le parcours dès que la réponse est trouvée.
9. *Ecrire une procédure triangle qui met à zéro tous les éléments qui sont en dessous de la
diagonale principale d’un tableau 2D carré d’entiers.

Feuille de TD n° 5 Page 1