Algorithmique & Programmation
Semestre 2 ST

Matrices de variables
Cours TD - Corrections TP

Exercice n°1

On considère une matrice d'entiers composée de 20 lignes de 8 colonnes. On souhaite effectuer diverses recherches au sein de ce tableau.

a) Développer un sous-algorithme permettant de calculer la plus petite valeur contenue dans un tel tableau.

b) Développer un sous-algorithme permettant de calculer la position de la plus petite valeur contenue dans un tel tableau.

c) Développer un sous-algorithme permettant de calculer l'indice de la ligne dont la somme des valeurs est la plus grande.

Exemple d'exécution

Exercice n°2

On manipule des matrices de réels.

a) Développer un sous-algorithme permettant de copier une matrice NxM dans une matrice NxM.

b) Développer un sous-algorithme permettant de copier la matrice transposée d'une matrice NxM dans une matrice MxN. Transposer une matrice est l'opération consistant à permuter ses valeurs autour de la diagonale.

c) Développer un sous-algorithme permettant de réaliser la transposition d'une matrice NxN. La transposition se fait "en place", sans utilisation d'une matrice auxiliaire.

Exemple d'exécution

Exercice n°3

On considère une matrice de NxM "cellules". Chaque cellule possède 4 cellules voisines (à droite, à gauche, en haut et en bas). Un déplacement élémentaire entre cellules ne peut être réalisé qu'entre deux cellules voisines. La "distance" existant entre deux cellules est le nombre minimum de déplacements élémentaires permettant de passer de la première cellule à la seconde.

a) Développer un sous-algorithme permettant de calculer la matrice des distances existant entre chaque cellule d'une matrice NxM et une cellule de position arbitraire.


Calcul des distances pour une matrice de 14 lignes de 20 colonnes
et la position de départ (8,5)

On pourra calculer les distances en les attribuant en motif concentrique autour de la position de départ. Il est bien entendu que l'on ne devra pas "déborder" de la matrice.

On considère que la matrice de taille NxM est une matrice de booléens. Cette matrice représente un plateau de jeu définissant 2 territoires (vrai pour le joueur n°1, faux pour le joueur n°2).


Exemple de plateau de jeu

b) Développer un sous-algorithme permettant de calculer la matrice des distances existant entre chaque cellule d'une matrice NxM et une cellule de position arbitraire. Dans cette version, le passage par une cellule du territoire du joueur opposé au joueur auquel appartient la cellule de départ est interdit. Une distance égale à -1 signifie une cellule non atteignable.


Distances à partir de la position initiale (8,5)


Distances à partir de la position initiale (1,8)

Contrairement à la question (a), il n'est plus possible d'attribuer les distances de manière simple et déterministe. Une méthode pourra consister à programmer un traitement itératif consistant, à chaque itération numérotée i, à parcourir l'intégralité de la matrice à la recherche de chaque cellule à laquelle une distance n'a pas encore été attribuée et qui touche une cellule à laquelle une distance a été attribuée. Chacune de ces cellules se voit attribuer comme distance la valeur i. Ce processus itératif se poursuit tant qu'au moins une cellule se voit attribuer une distance au cours d'une itération de traitement.

Exemple d'exécution