I. 181. Nous devons aider à la création
d’un motif fabriqué par une usine de textile. Le fichier texte grenouille.txt
contient la moitié d’un motif donné par des caractères (les caractères sont
séparés par des tabulations).
Lire le fichier grenouille.txt
à l’aide du tableur de telle façon que la première donnée lue soit
stockée dans la cellule A1 de la feuille de
calcul ,,Grenouille''.
(Les données contiennent aussi des cellules vides. A ces emplacements, il n’y
aura pas d’élément de motif.)
La signification du contenu des cellules:
|
Vide
|
Pas
d ‘élément
|
|
f
|
Noir
|
|
s
|
Vert foncé
|
|
v
|
Vert clair
|
|
Pour l’affichage de l’image (voir la figure ci-dessous), on doit effectuer quelques
réglages. Déterminer la largeur des colonnes A:AX
et la hauteur des lignes 1:50 de
telle façon que les cellules soient visibles sur l’écran et qu’elles soient de
forme carrée. Les données correspondantes à la moitié de l’image se trouvent
dans la zone A1:Y50. La création
de la deuxième moitié (symétrique) de l’image de la grenouille doit être
effectuée par une fonction copiable. Pour l’affichage des couleurs, on peut
appliquer une mise en forme conditionnelle.
A partir de la cellule AY:51, établir les statistiques des
couleurs des éléments selon le motif. Utiliser de préférence une expression qui
donnera un résultat correct après copie.
Dans la feuille de calcul ,,Grenouille_couchée''
afficher le motif de la grenouille avec une rotation de 90 degrés dans un sens
au choix, à l’aide de fonctions. Dans la feuille de calcul
,,Grande_grenouille'', agrandir au double le motif de la feuille de calcul
,,Grenouille''.
Envoyer le classeur (181.xls, 181.ods,
...) ainsi qu’une documentation brève (181.txt,
181.pdf, ...) qui contient le
nom du tableur utilisé, sa version et la description brève de la solution.

(10 points)
I. 182. Ecrire un programme simulant la
circulation de voitures à un rond-point, avec affichage sur un écran en mode
texte. Le rond-point relie deux routes perpendiculaires. Les routes arrivant au
rond-point sont numérotées de 1 à 4, au sens contraire des aiguilles d’une
montre. Les voitures sont symbolisées par ces chiffres sur l’écran en mode
texte de telle façon que chaque voiture porte le numéro de la route par
laquelle elle veut quitter le rond-point. Celle-ci peut-être la même par
laquelle elle est arrivée: dans ce cas, la voiture fait le tour complet du
rond-point et retourne dans la direction d’où elle vient.
Au début des différentes routes, dans les cases
menant au rond-point, à chaque pas de la simulation, de nouvelles voitures
arrivent avec une probabilité de pi (i
4)
(si la case se trouvant au début de la i-ème route est libre). Les
probabilités sont des nombres réels compris entre 0 et 1 que le programme
reçoit par les quatre premiers arguments de la ligne de commande. Les voitures
avancent à vitesse constante tant que la case précédente est libre. Si une
voiture plus lente roule devant elles, alors elles prennent provisoirement la
vitesse de celle-ci. La vitesse des voitures est un entier compris entre 1 et
5: si cette valeur est égale à 1, La voiture avance à chaque pas de simulation
(si elle peut), si cette valeur est 5, elle essaye d’avancer seulement tous les
cinquièmes pas, sinon elle reste sur place. Les voitures se trouvant dans le
rond-point ont la priorité sur celles voulant s’y engager. Les voitures
quittant le rond-point disparaissent au bout de la route de sortie.

Le programme doit présenter le mouvement des
voitures en appliquant les probabilités reçues en entrées. La simulation doit
s’arrêter en appuyant la barre d’espacement; la vitesse de la simulation doit
être régulable par les touches numériques de 1 à 9.
Envoyer le code source du programme (i182.pas, i182.cpp,
...), ainsi que sa documentation brève (i182.txt,
i182.pdf, ...) qui contient la
description de la solution et le nom de l’environnement où le code source peut
être compilé.
(10 points)
I. 183. A l'hôpital de Tataouine-les-Oies,
on essaye de diminuer les frais de fonctionnement. Les draps troués ne seront
plus jetés mais raccomodés. On dispose d’une machine moderne de reconnaissance
de trou laquelle détermine pour chaque drap, avec un certain taux de
résolution, si le tissu est intact ou troué. (Le trou ne peut se trouver au
bord du drap car celui-ci est très solide à cet endroit.)

La machine donne une valeur V pour une cellule intacte, L pour une cellule trouée. Sur une zone
trouée, on veut coudre un bout de tissu rectangulaire couvrant juste le manque de
matière, les côtés du raccomodage étant parallèles aux côtés du drap. La zone
trouée est contiguë si les cellules L sont
en contact par leurs côtés, non contiguë si les cellules ne sont pas en contact
ou si elles sont en contact par leurs coins. Les recouvrements entre
raccomodations sont possibles.
Ecrire un programme qui, en se basant sur le
fichier donné par la machine de reconnaissance de trou, affichera sur la sortie
standard les numéros d’ordre des raccomodations d’un drap ainsi que les
coordonnées de leurs coins supérieurs gauches et celles de leurs coins
inférieurs droits (numéro de ligne, numéro de colonne, dans l’ordre), par
rapport au coin supérieur gauche du drap.
Sur la ligne de commande, le paramètre en entrée
du programme doit être le nom du fichier décrivant le drap. La première ligne
du fichier contient un nombre entier: N (3
N
200)
le nombre de lignes; la deuxième ligne du fichier contient M (3
M
200)
le nombre de colonnes. Les N
lignes suivantes contiennent chacune M caractères décrivant l’état des cellules correspondantes (V ou L).

Envoyer le code source du programme (i183.pas, i183.cpp,
...), ainsi que sa documentation brève (i183.txt,
i183.pdf, ...) qui contient la
description de la solution et le nom de l’environnement où le code source peut
être compilé.
(10 points)