Julien Sopena

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 :

15812417
16147523
22201364
321191210
92251811

Question 1.1 )

Formuler, par rapport àn, la valeur constante S des sommes des lignes, colonnes et diagonales dans un carré magique normal.

Correction (cliquer ici)

Question 1.2 )

Déclarer les types et constantes nécessaires à l'élaboration d'un carré magique.

Correction (cliquer ici)

Question 1.3 )

Écrire un sous-programme afficherCarreMagique qui permet d'afficher un carré magique.

Correction (cliquer ici)

Question 1.4 )

Écrire un sous-programme sommeLigne qui calcule la somme des valeurs contenues dans la ième ligne d'un carré.

Correction (cliquer ici)

Question 1.5 )

Écrire un sous-programme sommeColonne qui calcule la somme des valeurs contenues dans la ième colonne d'un carré.

Correction (cliquer ici)

Question 1.6 )

Écrire un sous-programme sommeDiag1 qui calcule la somme des valeurs contenues dans la diagonale NO-SE d'un carré.

Correction (cliquer ici)

Question 1.7 )

Écrire un sous-programme sommeDiag2 qui calcule la somme des valeurs contenues dans la diagonale SO-NE d'un carré.

Correction (cliquer ici)

Question 1.8 )

Écrire un sous-programme testCarreMagique qui teste si un carré est bien un carré magique normal.

Correction (cliquer ici)

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.

Correction (cliquer ici)

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.

Correction (cliquer ici)

Designed by OWSD.org. Valid CSS & XHTML
Ce site et l'ensemble de son contenu est mis à disposition sous un contrat Creative Commons.
Creative Commons License