Bases de programmation - TD 3 : Tableaux et types complexes

publicité
Bases de programmation - TD 3 : Tableaux et types complexes
3. Types complexes et collections
IUT Aix-Marseille / DUT R&T 1ière année
J. Seinturier (http://www.seinturier.fr)
Exercice 3.1 : Nous souhaitons maintenant représenter un voisinage de personnes. Nous nous limiterons ici à
décrire un voisinage comme un ensemble de personnes habitant de façon contiguë dans la même rue. Afin de
représenter un voisinage, écrire la définition du type Voisin composé :
1. Tableaux à plusieurs dimensions
Exercice 1.1 : Ecrire un algorithme qui demande à l’utilisateur un nombre de lignes et un nombre de colonnes et
qui ensuite fait la saisie de toutes les valeurs d’un tableau d’entiers en 2 dimensions ayant le bon nombre de lignes
et de colonnes.
Exercice 1.2 : Ecrire un algorithme qui prends en entrée deux matrices à 2 dimensions et calcule leur produit.
Rappel : Soit mat1 une matrice de taille n × m et mat2 une matrice de taille m × l, le produit des deux matrices,
noté mat1 × mat2 est une matrice de taille n × l tel que chaque case d’index (i, j) à pour valeur :
mat1 × mat2 (i, j )=
m −1
∑ mat (i, k) × mat (k, j)
k =0
1
2
Exercice 1.3 : Ecrire un algorithme qui prend en entrée un tableau de chaines de caractère à 2 dimensions et qui
retourne les indexes de ligne et de colonne de la première case contenant le mot ‘’Bonjour’’ trouvée. Si le mot
n’est pas trouvé, les indexes renvoyés doivent être -1.
2. Types complexes et opérations simples
Exercice 2.1 : Ecrire la définition d’un type complexe permettant de représenter une personne. Le type sera
nommé Personne et devra contenir : un nom (chaine), un prénom (chaine) et un numéro de sécurité sociale
(entier).
Exercice 2.2 : Ecrire la définition d’un type complexe Adresse qui permettra de représenter une adresse postale.
Une adresse postale est composée d’un numéro de rue (entier), d’un nom de voie (chaine), d’un code postal
(entier) et d’une ville (chaine)
Exercice 2.3 : Ecrire un algorithme lirePersonne qui retourne une valeur de type Personne dont les champs ont
été saisis par l’utilisateur.
Exercice 2.4 : Ecrire un algorithme lireAdresse qui retourne une valeur de type Adresse dont les champs ont
été saisis par l’utilisateur.
Exercice 2.5 : En général, une personne peut également être identifiée par une adresse postale. Modifier le type
Personne afin d’intégrer une adresse postale dans la description d’une personne. (Penser à l’imbrication)
Exercice 2.6 : Modifier l’algorithme lirePersonne afin de lire également l’adresse de la personne en cours de
saisie. Conseil : N’hésitez pas à appeler des algorithmes existants sous forme de fonctions.
Exercice 2.7 : Ecrire un algorithme ecrireAdresse qui prends en entrée une Adresse et permet d’en écrire
toutes les données.
Exercice 2.8 : Ecrire un algorithme ecrirePersonne qui prends en entrée une Personne et permet d’en écrire
toutes les données, y compris l’adresse postale. Conseil : L’appel de fonctions est toujours votre ami.
Exercice 2.9 : Ecrire un algorithme memeAdresse qui prends en entrée deux Personne et qui retourne vrai cellesci habitent à la même adresse et faux sinon.
•
•
•
d’une variable pers de type Personne qui décrit l’habitant actuel
d’une variable gauche de type Voisin qui décrit le voisin habitant dans la maison à gauche de la maison
actuelle ;
d’une variable droite de type Voisin qui décrit le voisin habitant dans la maison à droite de la maison
actuelle ;
Nous considèrerons pour le reste du TD que la rue est composée de maisons toutes contiguës et que chaque
maison n’est habitée que par une seule personne.
Les voisins habitants aux extrémités d’une rue n’ont pas de voisin droit ou gauche. Afin de représenter cela, les
variables correspondantes recevront pour valeur null.
Exemple de voisinage avec 4 voisins A, B, C, D :
A est voisin gauche de B
B est voisin de droite de A et voisin gauche de C
C est voisin de droite de B et voisin gauche de D
D est voisin de droite de C
A
B
C
D
rue
Exercice 3.2 : En utilisant les types appropriés, écrire un algorithme population qui permet de saisir le voisinage
d’une rue. Cet algorithme saisira les voisins de la droite vers la gauche. A chaque saisie de voisin, l’algorithme
devra demander à l’utilisateur s’il souhaite ajouter un autre voisin ou s’il s’arrête là. Penser à bien respecter les
conditions décrivant un voisin (et penser surtout à gérer les extrémités de rue)
Exercice 3.3 : Ecrire un algorithme distanceGauche qui prend en entrée une variable de type Voisin et qui
compte le nombre de voisin à sa gauche avant d’arriver à l’extrémité de la rue.
Exercice 3.4 : Ecrire un algorithme distanceDroite qui prend en entrée une variable de type Voisin et qui
compte le nombre de voisin à sa droite avant d’arriver à l’extrémité de la rue.
Exercice 3.5 : Ecrire un algorithme recensement qui prend en paramètre une variable de type Voisin et qui
retourne le nombre total de voisins présents dans la rue.
Exercice 3.6 : Ecrire un algorithme insérerGauche qui prend en entrée une variable de type Voisin et qui demande
à l’utilisateur de saisir un nouveau voisin avant de l’insérer à la gauche du voisin donné en entrée. Conseil : Bien
faire attention à mettre à jour tout ce qui est nécessaire dans le voisinage.
Exercice 3.7 : Ecrire un algorithme supprimerVoisin qui prend en entrée une variable de type Voisin et qui le retire
du voisinage. On suppose que le voisin donné fait bien partie du voisinage. Conseil : Bien faire attention à mettre
à jour tout ce qui est nécessaire dans le voisinage.
Téléchargement