SERIE D'EXERCICES
Proposez Par : Groupe Genius Répétition
Des exercices qui vont vous permettre de mieux comprendre les Notions de Variables , constantes , d'emplacement mémoire , Structure Conditionnelles & Boucles .
Exercice 21 : Carre magique
Un carre magique est une matrice carree d'ordre n dont les éléments sont tous les entiers entre 1 et n2 telle que la somme des éléments de chaque colonne et la somme des éléments de chaque diagonale soient egale. Proposer un algorithme qui construit un carré magique d'ordre n donné.
Prinicpe :
Un carré magique est un carré divisé en lignes et en colonnes de nombres tels que la somme des nombres de chaque ligne, chaque colonne et chaque diagonale est la même. Voici les étapes pour créer un carré magique de taille n :
Placez le nombre 1 dans la première colonne de la première ligne.
Pour chaque nouveau nombre à insérer (2, 3, etc.), placez-le dans la colonne suivante de la ligne en haut. Si vous atteignez la fin de la ligne, passez à la ligne suivante et reprenez au début de la colonne. Si vous atteignez la fin de la dernière colonne, passez à la première colonne de la ligne en haut.
Si la case suivante est déjà occupée, placez le nouveau nombre dans la case immédiatement en dessous de la dernière case utilisée. Si cette case est également occupée, placez le nouveau nombre dans la case immédiatement en dessous de la case occupée et déplacez-vous à droite jusqu'à la prochaine case vide.
Répétez ces étapes jusqu'à ce que toutes les cases du carré soient remplies.
Voici un exemple de carré magique de taille 3 :
8 1 6
3 5 7
4 9 2
Et voici un exemple de carré magique de taille 4 :
16 3 2 13
5 10 11 8
9 6 7 12
4 15 14 1
Il existe de nombreuses variantes de cet algorithme, mais cette méthode est l'une des plus couramment utilisées.
Par le Groupe Genius Répétition
Corrections
Exercice 1 :
Algorithme Carre_Magique ;
const N = 5 ;
type MatEnt = tableau [ 1..N,1..N] de entier ;
var : j,l,col,i : entier ;
t :MatEnt ;
Debut
co Réaliser par le Groupe Genius Repetition fco
Pour i de 1 à N faire
Pour j de 1 à N faire
t [ i,j] := 0 ;
fpr
fpr
i := 0 ; l := N div 2 ; col := ( N+ 1) div 2 ; t [ l,col] := i ;
tantque( i < N * N ) faire
l := l - 1 ; col := col + 1 ;
si ( l < 0 et col > N ) alors
l := N-1 ; col := col-1 ;
sinon
si ( col > N ) alors
col :=1
sinon
si ( l < N ) alors
si ( l = 1 et col = 2 ) alors
l :=N ; col := col-1 ;
sinon
l :=N ;
fsi
fsi
fsi
fsi
i := i + 1 ;
si ( t [ l,col] = 0 ) alors
t [ l,col] := i ;
sinon
l := l-1 ;
col := col-1;
t [ l,col] := i ;
fsi
ftque
Ecricre ( ' Carré Magique !' );
Pour i de 1 à N faire
Pour j de 1 à N faire
Ecricre ( t [ i,j] );
fpr
fpr
Fin.