const
MAX=5;
var a:array[1..MAX,1..MAX] of integer;
n:integer;
ok:boolean;
i,j:integer;
sum:integer;
temp:integer;
begin
Write('Введите рамер матрицы (3..4)');
Readln(n);
Writeln('Введите строки матрицы!');
Writeln('После ввода ',n,' целых чисел нажимайте Enter!');
for i:=1 to n do
begin
Write('->');
for j:=1 to n-1 do
read(a[i,j]);
readln(a[i,n]);
end;
Ok:=True;
sum:=0;
for i:=1 to n do
sum:=sum+a[i,i];
{Вычисляем сумму по строкам}
i:=1;
repeat
temp:=0;
for j:=1 to n do
temp:=temp+a[i,j];
i:=i+1;
if temp <> sum then
ok:=False;
until (not ok) or (i>n);
if ok then
begin
j:=1;
repeat
temp:=0;
for i:=1 to n do
temp:=temp+a[i,j];
j:=j+1;
if temp <> sum then
ok:=False;
until (not ok) or (j>n);
if ok then
begin
temp:=0;
j:=n;
for i:=1 to n do
begin
temp:=temp+a[i,j];
j:=j-1;
end;
if temp<> sum then
ok:=False;
end;
end;
Write('Введенная матрица');
if not ok then
write('не');
Writeln('является магическим квадратом!');
readln;
end
MAX=5;
var a:array[1..MAX,1..MAX] of integer;
n:integer;
ok:boolean;
i,j:integer;
sum:integer;
temp:integer;
begin
Write('Введите рамер матрицы (3..4)');
Readln(n);
Writeln('Введите строки матрицы!');
Writeln('После ввода ',n,' целых чисел нажимайте Enter!');
for i:=1 to n do
begin
Write('->');
for j:=1 to n-1 do
read(a[i,j]);
readln(a[i,n]);
end;
Ok:=True;
sum:=0;
for i:=1 to n do
sum:=sum+a[i,i];
{Вычисляем сумму по строкам}
i:=1;
repeat
temp:=0;
for j:=1 to n do
temp:=temp+a[i,j];
i:=i+1;
if temp <> sum then
ok:=False;
until (not ok) or (i>n);
if ok then
begin
j:=1;
repeat
temp:=0;
for i:=1 to n do
temp:=temp+a[i,j];
j:=j+1;
if temp <> sum then
ok:=False;
until (not ok) or (j>n);
if ok then
begin
temp:=0;
j:=n;
for i:=1 to n do
begin
temp:=temp+a[i,j];
j:=j-1;
end;
if temp<> sum then
ok:=False;
end;
end;
Write('Введенная матрица');
if not ok then
write('не');
Writeln('является магическим квадратом!');
readln;
end