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
A voir également:

6 réponses

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
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
whynot12 Messages postés 70 Statut Membre 1
 
essaye ça
TTAB : array [n,n] of integer;
0
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
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
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
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