Carré magic aide SVP mes chers amis

chessinfo -  
 amigo -
bonjour;
mes chers amis merci de me regler ce probleme avec le carré magique SVP ! je trouve pa mon erreur :s

program MAGIC;
var n,l,m:integer;
TTAB : array [1..n,1..n] of integer;

procedure carremagic(n:integer , var T:TTAB)
var i,j,ani,anj:integer;
begin
i:=1;
j:=(n div 2)+1;
for k:=1 to (n*n) do
begin
T[i,j]:=k;
ani:=i;
anj:=j;
i:=i+1;
j:=j+1;
if(i=0)
then i:=n;
if(j=n+1)
then j:=1;
if(T[i,j]>0) then
begin
i:=ani+1;
j:=anj;
end;
end;

end.
begin(*programme principale*)
writeln('donner un nombre impaire:');
readln(n);
carremagic(n,T[l,m]);
for l:=1 to n do
for m:=1 to n do
writeln('T[',l,',',m,']');
readln;
end.

merci

6 réponses

  1. whynot12 Messages postés 70 Statut Membre 1
     
    salut
    t'as pas declaré la variable k

    program MAGIC;
    var n,l,m:integer;
    TTAB : array [1..n,1..n] of integer;

    procedure carremagic(n:integer , var T:TTAB)
    var i,j,ani,anj:integer;
    begin
    i:=1;
    j:=(n div 2)+1;
    for k:=1 to (n*n) do
    begin
    T[i,j]:=k; <----------------------- k!
    ani:=i;
    anj:=j;
    i:=i+1;
    j:=j+1;
    if(i=0)
    then i:=n;
    if(j=n+1)
    then j:=1;
    if(T[i,j]>0) then
    begin
    i:=ani+1;
    j:=anj;
    end;
    end;

    end.
    begin(*programme principale*)
    writeln('donner un nombre impaire:');
    readln(n);
    carremagic(n,T[l,m]);
    for l:=1 to n do
    for m:=1 to n do
    writeln('T[',l,',',m,']');
    readln;
    end.

    0
  2. chessinfo
     
    oui MR whynot12, merci bcp
    mon probleme c ke dans cette ligne :
    TTAB : array [1..n,1..n] of integer;
    erreur =>cannot evaluate this expression
    0
    1. whynot12 Messages postés 70 Statut Membre 1
       
      essaye ça
      TTAB : array [n,n] of integer;
      0
  3. chessinfo
     
    avec TTAB : array [n,n] of integer;

    erreur 21 :error in type :s

    toujour ya des erreurs ! j'arrive pa a comprendre :s aidez moi SVP
    0
  4. amigo
     
    Salut,

    var i,j,ani,anj:integer; <-----------ajoute la déclaration de K ici
    begin
    i:=1;
    j:=(n div 2)+1;
    for k:=1 to (n*n) do <-------------- K n'est pas déclaré
    begin
    T[i,j]:=k; <---------------------------K n'est pas déclaré

    end. <--------------pas de point apres end, il faut (;), le point final est pour END de la procedure principale.
    begin(*programme principale*)

    J'espère que ça marchera.
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. chessinfo
     
    merci de vos effor mes amis ! mais ya les meme erreur déclarer
    au niveau de
    =>TTAB : array [1..n,1..n] of integer;
    => n n'est connu
    merci de le compiler pour me comprendre mieu
    0
  7. amigo
     
    Salut,

    Il y a d'autres erreurs

    TTAB : array [1..n,1..n] of integer; <--- n est une variable, on ne peut pas utiliser de variables pour dimensionner un tableau.

    readln(n);
    carremagic(n,T[l,m]); <--- tu appelle carremagic avec T[l,m], or l et m n'ont pas été initialisées, au mieux l et m ont la valeur 0, le l'indice de début du tableau T commence à 1 .

    Enfin voila, apres correction, j'ai compilé avec succes mai je doute que le resutat soit bon. Il faudrait ton algo ou au mois l'enoncé précis pour corriger la logique du code.

    program MAGIC;
    var n,l,m:integer;
    TTAB : array [1..10,1..10] of integer; {<---pas de variables dans le dimensionnement; j'ai mis 1..10 il faut ajuster}
    {par exemple tu peux mettre 1..100}

    procedure carremagic(n : integer); {<---pas la peine de passer le tableau en parametre puisqu'il est déclaré global}
    var i,j,ani,anj,k:integer; {declaration de k}
    begin
    i:=1;
    j:=(n div 2)+1;
    for k:=1 to (n*n) do
    begin
    TTAB[i,j]:=k;
    ani:=i;
    anj:=j;
    i:=i+1;
    j:=j+1;
    if(i=0)
    then i:=n;
    if(j=n+1)
    then j:=1;
    if(TTAB[i,j]>0) then
    begin
    i:=ani+1;
    j:=anj;
    end;
    end;
    end;

    begin(*programme principale*)
    writeln('donner un nombre impaire:');
    readln(n);{<-verifie la valeur de n pour ne pas etre hors limites de ton tableau}
    carremagic(n);
    for l:=1 to n do
    for m:=1 to n do
    writeln('T[',l,',',m,']');
    readln;
    end.
    0