Program Pr34 (Input, Output);
Var
X : Array [1..20, 1..20] Of Integer;
N : Integer;
i, j: Integer;
S, T : Integer;
Flag: Boolean;
Begin
WriteLn ('PASCAL: Проверка матрицы на "магический квадрат".');
Write ('Введите размерность квадратной матрицы: ');
ReadLn (N);
WriteLn ('Введите поочередно элементы таблицы:');
For i := 1 To N Do
For j := 1 To N Do
Begin
Write ('X[', i, ',', j, '] = ');
ReadLn (X [i, j] );
End;
WriteLn;
For i := 1 To N Do
Begin
For j := 1 To N Do
Write (X [i, j] : 5);
WriteLn;
End;
S := 0;
For i := 1 To N Do
S := S + X [1, i];
Flag := True;
For i := 1 To N Do
Begin
T := 0;
For j := 1 To N Do
T := T + X [i, j];
If T <> S Then Flag := False;
End;
For j := 1 To N Do
Begin
T := 0;
For i := 1 To N Do
T := T + X [i, j];
If T <> S Then Flag := False;
End;
T := 0;
For i := 1 To N Do T := T + X [i, i];
If T <> SThenFlag := False;
T := 0;
For i := 1 To N Do T := T + X [i, N - i + 1];
If T <> SThenFlag := False;
If (Flag = True)
Then Writeln('Матрица является "магическим квадратом".')
Else Writeln('Матрица не является "магическим квадратом".');
ReadLn;
End.