PARTIE 8
Corrigés des Exercices
Exercice 8.1
Tableau Truc[5, 12] en Entier
Debut
Pour i ← 0 à 5
Pour j ← 0 à 12
Truc[i, j] ← 0
j Suivant
i Suivant
Fin
Cet algorithme remplit un tableau de la manière suivante:
X[0, 0] = 1
X[0, 1] = 2
X[0, 2] = 3
X[1, 0] = 4
X[1, 1] = 5
X[1, 2] = 6
Il écrit ensuite ces valeurs à l’écran, dans cet ordre.
Cet algorithme remplit un tableau de la manière suivante:
X[0, 0] = 1
X[1, 0] = 4
X[0, 1] = 2
X[1, 1] = 5
X[0, 2] = 3
X[1, 2] = 6
Il écrit ensuite ces valeurs à l’écran, dans cet ordre.
Cet algorithme remplit un tableau de la manière suivante:
T[0, 0] = 0
T[0, 1] = 1
T[1, 0] = 1
T[1, 1] = 2
T[2, 0] = 2
T[2, 1] = 3
T[3, 0] = 3
T[3, 1] = 4
Il écrit ensuite ces valeurs à l’écran, dans cet ordre.
Version a : cet algorithme remplit un tableau de la manière suivante:
T[0, 0] = 1
T[0, 1] = 2
T[1, 0] = 3
T[1, 1] = 4
T[2, 0] = 5
T[2, 1] = 6
T[3, 0] = 7
T[3, 1] = 8
Il écrit ensuite ces valeurs à l’écran, dans cet ordre.
Version b : cet algorithme remplit un tableau de la manière suivante:
T[0, 0] = 1
T[0, 1] = 5
T[1, 0] = 2
T[1, 1] = 6
T[2, 0] = 3
T[2, 1] = 7
T[3, 0] = 4
T[3, 1] = 8
Il écrit ensuite ces valeurs à l’écran, dans cet ordre.
Variables i, j, iMax, jMax en Numérique
Tableau T[12, 8] en Numérique
Le principe de la recherche dans un tableau à deux dimensions est strictement le même que
dans un tableau à une dimension, ce qui ne doit pas nous étonner. La seule
chose qui change, c'est qu'ici le balayage requiert deux boucles imbriquées,
au lieu d'une seule.
Debut
...
iMax ← 0
jMax ← 0
Pour i ← 0 à 12
Pour j ← 0 à 8
Si T[i,j] > T[iMax,jMax] Alors
iMax ← i
jMax ← j
FinSi
j Suivant
i Suivant
Ecrire "Le plus grand élément est ", T[iMax, jMax]
Ecrire "Il se trouve aux indices ", iMax, "; ", jMax
Fin
Variables i, j , posi, posj, i2, j2 en Entier
Variables Correct, MoveOK en Booléen
Tableau Damier[7, 7] en Booléen
Tableau Mouv[3, 1] en Entier
Le damier contenant un seul pion, on choisit de le coder à l'économie, en le
représentant par un tableau de booléens à deux dimensions. Dans chacun des
emplacements de ce damier, Faux signifie l'absence du pion, Vrai sa présence.
Par ailleurs, on emploie une méchante astuce, pas obligatoire, mais bien
pratique dans beaucoup de situations. L'idée est de faire correspondre les
choix possibles de l'utilisateur avec les mouvements du pion.
On entre donc dans un tableau Mouv à deux dimensions, les déplacements du
pion selon les quatre directions, en prenant soin que chaque ligne du tableau corresponde à
une saisie de l’utilisateur. La première valeur étant le déplacement en i,
la seconde le déplacement en j. Ceci nous épargnera par la suite de faire
quatre fois les mêmes tests.
Debut
Choix 0 : pion en haut à droite
Mouv[0, 0] ← -1
Mouv[0, 1] ← -1
Choix 1 : pion en haut à droite
Mouv[1, 0] ← -1
Mouv[1, 1] ← 1
Choix 2 : pion en bas à gauche
Mouv[2, 0] ← 1
Mouv[2, 1] ← -1
Choix 3 : pion en bas à droite
Mouv[3, 0] ← 1
Mouv[3, 1] ← 1
Initialisation du damier; le pion n’est pour le moment nulle part
Pour i ← 0 à 7
Pour j ← 0 à 7
Damier[i, j] ← Faux
j suivant
i suivant
Saisie de la coordonnée en i ("posi") avec contrôle de saisie
Correct ← Faux
TantQue Non Correct
Ecrire "Entrez la ligne de votre pion: "
Lire posi
Si posi >= 0 et posi <= 7 Alors
Correct ← vrai
Finsi
Fintantque
Saisie de la coordonnée en j ("posj") avec contrôle de saisie
Correct ← Faux
TantQue Non Correct
Ecrire "Entrez la colonne de votre pion: "
Lire posj
Si posj >= 0 et posj <= 7 Alors
Correct ← Vrai
Finsi
Fintantque
Positionnement du pion sur le damier virtuel.
Damier[posi, posj] ← Vrai
Saisie du déplacement, avec contrôle
Ecrire "Quel déplacement ?"
Ecrire " - 0: en haut à gauche"
Ecrire " - 1: en haut à droite"
Ecrire " - 2: en bas à gauche"
Ecrire " - 3: en bas à droite"
Correct ← Faux
TantQue Non Correct
Lire Dep
Si Dep >= 0 et Dep <= 3 Alors
Correct ← Vrai
FinSi
FinTantQue
i2 et j2 sont les futures coordonnées du pion.
La variable booléenne MoveOK vérifie la validité de ce futur
emplacement
i2 ← posi + Mouv[Dep, 0]
j2 ← posj + Mouv[Dep, 1]
MoveOK ← i2 >= 0 et i2 <= 7 et j2 >= 0 et j2 <= 7
Cas où le déplacement est valide
Si MoveOK Alors
Damier[posi, posj] ← Faux
Damier[i2, j2] ← Vrai
Affichage du nouveau damier
Pour i ← 0 à 7
Pour j ← 0 à 7
Si Damier[i, j] Alors
Ecrire " O ";
Sinon
Ecrire " X ";
FinSi
j suivant
Ecrire ""
i suivant
Sinon
Cas où le déplacement n’est pas valide
Ecrire "Mouvement impossible"
FinSi
Fin
|