TP 08 – Les tableaux à deux dimensions
Exercice 1: Carré magique
Un carré magique de taille n est un arrangement en carré de n2 valeurs. Ces nombres sont disposés de manière à ce que leurs sommes sur chaque rangée, sur chaque colonne et sur chaque diagonale soient égales. Un carré magique est dit normal s'il est rempli avec les nombres entiers compris entre 1 et n2 (inclus).
Le dessin suivant représente un carré magique de taille 5 :
15 | 8 | 1 | 24 | 17 |
16 | 14 | 7 | 5 | 23 |
22 | 20 | 13 | 6 | 4 |
3 | 21 | 19 | 12 | 10 |
9 | 2 | 25 | 18 | 11 |
Question 1.1 )
Formuler, par rapport àn, la valeur constante S des sommes des
lignes, colonnes et diagonales dans un carré magique normal.
Question 1.2 )
Déclarer les types et constantes nécessaires à l'élaboration d'un carré
magique.
Question 1.3 )
Écrire un sous-programme afficherCarreMagique qui permet d'afficher un
carré magique.
Question 1.4 )
Écrire un sous-programme sommeLigne qui calcule la somme des valeurs
contenues dans la ième ligne d'un carré.
Question 1.5 )
Écrire un sous-programme sommeColonne qui calcule la somme des valeurs
contenues dans la ième colonne d'un carré.
Question 1.6 )
Écrire un sous-programme sommeDiag1 qui calcule la somme des valeurs
contenues dans la diagonale NO-SE d'un carré.
Question 1.7 )
Écrire un sous-programme sommeDiag2 qui calcule la somme des valeurs
contenues dans la diagonale SO-NE d'un carré.
Question 1.8 )
Écrire un sous-programme testCarreMagique qui teste si un carré est bien
un carré magique normal.
Question 1.9 )
Écrire un sous-programme carreMagique qui construit un carre magique
normal de taille n, n impair, en plaçant les valeurs 1, 2, ..., n2
suivant le principe suivant :
- On place la valeur 1 au milieu de la ligne 1,
- On continue en montant en diagonale vers la gauche :
- si cela conduit à déborder en haut ou à gauche, le nombre est placé dans la dernière ligne ou la dernière colonne. Par exemple, 2 est placé dans la dernière ligne, et 23 est placé dans la dernière colonne.
- Si on atteint une case déjà remplie, le nombre est placé en dessous du nombre précédent ; cette dernière situation se produit chaque fois qu'on vient de placer un multiple de N. Par exemple, 6 est placé sous 5 et 11 est placé sous 10.
Question 1.10 )
A l'aide de l'ensemble de ces sous-programmes, écrire un programme qui
construise et teste un carré magique normal d'au moins une case.