Le carré magique : la matrice sous turbo pascal

xavier -  
 viirus -
j'ai un devoir a rendre pour la semaine prochaine et il est presque fini: merci donc à celui ou celle qui m'apportera son aide.
il me reste à faire l'étape"3". voici l'énoncé:
ecrire un programme qui permet à l'utilisateur d'executer les fonctions suivantes:
"1"/ saisir une matrice (n lignes, n colonnes) qui sera placé dans le tableau.
"2"/afficher la matrice.
"3"/verifier si la matrice est un carré magique. c'est un carré magique si la somme de toutes les lignes, colonnes et diagonales principales sont égales (donnez-moi si possible quelques précisions sur la définition du carré magique).

4 réponses

  1. hamma
     
    program carre_magique;
    uses wincrt;
    type mat = array [1..19,1..19] of integer ;
    { Remarquer qu'une indexation de 0 à 18 rendrait possible l'utilisation de la fonction "mod" au lieu de la fonction
    F définie plus loin. }
    var N, D : integer ; A : mat;
    procedure lecture (var N : integer ; var P : integer );
    begin write ('Carrés magiques de coté impair avec des entiers consécutifs positifs.');
    write ('Nombre de lignes et de colonnes: ');
    repeat
    readln (N)
    until odd (N); {seule une valeur impaire est acceptée}
    write ('Valeur de départ: ');
    readln (P)
    end ;
    procedure ecriture (M : mat ; N, P : integer );
    { Affichage d'une matrice de N lignes et P colonnes }
    var I, J : integer ;
    begin
    for I := 1 to N do
    begin
    for J := 1 to P do
    write (M[I, J] : 4 );
    writeln { passage à la ligne}
    end
    end ;

    function f (X, N : integer ) : integer ;
    {F est construite pour donner un résultat entre 1 et N dans tous les cas, on peut bien sûr se contenter de : "si
    X<N alors X sinon X-N ", mais indexer le tableau de 0 à n-1 permet d'utiliser "mod" et donc de se dispenser de F }
    begin if X < 1 then F := F(X + N ,N)
    else if X > N then F := F(X - N,N)
    else F := X
    end;
    procedure construc (N, D : integer ; var A : mat ); {D est la valeur initiale, N la dimension du carré}
    var I, J, X : integer ; {I , J sont les coordonnées de la case courante }
    begin for I := 1 to N do for J := 1 to N do A [I, J] := 0; {Initialisation nécessaire}
    I := (N div 2) + 1 ; J := I-1;
    for X := 0 to (N*N) -1 do
    begin if A[F(I+1, N), F (J+1, N)] = 0
    then begin I := F (I+1, N); J := F (J+1, N) end
    else repeat I := F (I+2, N) until A[I, J] = 0;
    { Si la case suivante est vide, alors la case courante devient cette case-là.}
    A[I, J] := X + D
    end; { D est la valeur de départ }
    end;
    begin
    lecture (N, D);
    construc (N, D, A);
    ecriture (A, N, N);
    writeln ('La somme vaut : ', (N*(N*N-1) div 2) + N*D )
    end.
    11
  2. viirus
     
    program matrice_magique ;
    uses wincrt ;
    type
    mat = array[1..100,1..100] of integer ;
    var
    m : mat ;
    n : integer ;

    procedure saisie (var n : integer);
    begin
    repeat
    writeln('Donner la dimension de la matrice ');
    readln(n);
    until (n mod 2 <> 0) and (n>1);
    end;

    procedure affiche_mat (m : mat ; n : integer );
    var
    l,c : integer ;
    begin
    for l:= 1 to n do
    begin
    for c := 1 to n do
    write(m[l,c],' ');
    writeln;
    end;
    end;

    procedure remplir_mat (var m : mat ; n : integer);
    var
    l,c,k,sl,sc : integer ;
    begin
    {initialisation}
    l := n ;
    c := (n div 2 ) + 1 ;
    k := 0 ;
    repeat
    k:= k + 1 ;
    m[l,c] := k ;
    sl := l;
    sc := c;
    l := l + 1 ;
    c := c + 1 ;
    if l > n then
    l := 1 ;
    if c > n then
    c := 1 ;

    if m[l,c] <> 0 then
    begin
    l:= sl-1 ;
    c:=sc;
    end;
    until k = sqr(n) ;
    end;

    {programme principal}
    begin
    saisie(n);
    remplir_mat(m,n);
    affiche_mat(m,n);
    end.
    4
  3. ferdouse
     
    salut esk vous pouvé maidé sur un exo ke le prof ma donnée sur la carrée magique
    je dois ecrire un programme qui permet d'obtenir un carrée magique sans utilisé les procédures et les fonctions
    je vous prie de bien vouloir m'aider
    2
  4. billy_113
     
    slt j ai ecri un algorithme qui permet de remplir un carré magique pour n impair
    -1