Это код на построение магического квадрата 5 порядка.
По столбцу и по строке сумма элементов сходится,а вот по диагонали нет.
Подскажите в чем ошибка ?

uses crt;
const n=5;
var a:array[1..n,1..n] of integer;
i,j,x,y:integer;
begin
clrscr;
for i:=1 to n do
for j:=1 to n do
begin
x:=i+j;
y:=i-j;
if x>n then dec(x,n);
if y<1 then inc(y,n);
a[y,x]:=(i-1)*n+j;
end;
for y:=1 to n do
begin
for x:=1 to n do
write(a[y,x]:4);
writeln;
end;
readln
end.