Algorithmique & Programmation Orientée Objet Semestre 2 ST Matrices de variables |
|||
|
|||
|
|||
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. Exercice n°2 On manipule des matrices de réels. a) Développer un sous-algorithme permettant de copier une matrice dans une matrice. Leurs tailles sont supposées identiques. b) Développer un sous-algorithme permettant de copier la matrice transposée d'une matrice dans une matrice. Leurs tailles sont supposées compatibles. Transposer une matrice est l'opération consistant à permuter ses valeurs autour de la diagonale principale. c) Développer un sous-algorithme permettant de réaliser la transposition d'une matrice. La transposition se fait "en place", sans utilisation d'une matrice auxiliaire. Exercice n°3 On manipule des tableaux et des matrices de caractères. a) Développer un sous-algorithme permettant de générer un tableau à partir d'une matrice. Le tableau généré sera de taille nl*nc où nl et nc sont les nombres de lignes et de colonnes de la matrice. Les valeurs de la matrice seront reportées les unes à la suite des autres dans le tableau ligne de la matrice après ligne de la matrice (de gauche à droite et de bas en haut). b) Développer un sous-algorithme permettant de générer une matrice à partir d'un tableau. Outre le tableau, le sous-algorithme aura comme paramètre le nombre de lignes et le nombre de colonnes de la matrice à générer. Le report des valeurs dans la matrice est effectué séquentiellement de gauche à droite et de bas en haut. S'il n'y a pas assez de place, le report sera arrêté une fois la matrice pleine. S'il y a plus de place que nécessaire, les emplacements non remplis seront affectés avec le caractère espace. Exercice supplémentaire n°1 Vous êtes l'organisateur d'un Loto Quine. Dans ce jeu, les joueurs achètent des cartons comportant des nombres répartis sur une grille. Le maître du jeu tire ensuite au sort des nombres et les annonce à l’ensemble des joueurs. Le premier joueur ayant complété l’ensemble des nombres présents sur l’une des lignes de ses cartons et l'ayant annoncé en criant "quine" gagne le premier lot mis en jeu. Le premier joueur ayant complété l’ensemble des nombres présents sur l’un de ses cartons et l'ayant annoncé en criant "carte" gagne le deuxième lot mis en jeu. Le but de l’exercice consiste à développer un sous-algorithme de génération d’un carton.
Les caractéristiques précises d’un carton sont (voir exemples ci-dessous):
Exercice supplémentaire n°2 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.
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).
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.
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. |