в паскале так
_____________
Program MagicSquare;
Uses Crt;
Var A : Array [1..20, 1..20] of Integer;
i, j, N : Integer;
Standard, S : Integer; {Standard - сумма-эталон, S - текущая
сумма}
Flag : Boolean;
Procedure InputOutput; {описание процедуры ввода-вывода
матрицы}
Begin
ClrScr;
Write('Количество строк и столбцов - ');
ReadLn(N);
For i := 1 to N do
For j := 1 to N do
begin Write('A[' , i , ', ' , j , '] = ');
ReadLn(A[i, j])
end;
ClrScr;
WriteLn('Исходная матрица :'); WriteLn;
For i := 1 to N do
begin
For j := 1 to N do Write(A[i, j] : 5);
WriteLn
end; WriteLn
End;
Procedure MagicOrNot(Var Flag : Boolean); {описание
процедуры, }
{в которой выясняется, является ли квадрат
"магическим"}
Begin {вычисление суммы элементов главной диагонали}
{в качестве эталонной суммы}
Standard:=0;
For i := 1 to N do Standard := Standard + A[i,i];
Flag:=TRUE; i:=1;
While (i<=N) and Flag do {вычисление сумм элементов строк}
begin
S:=0;
For j := 1 to N do S := S+A[i, j];
If S<>Standard then Flag := FALSE else i:=i+1
end;
j:=1;
While (j<=N) and Flag do {вычисление сумм элементов столбцов}
begin
S:=0;
For i := 1 to N do S:=S+A[i, j];
If S<>Standard then Flag := FALSE else j := j+1
end;
If Flag then
begin
S:=0; {вычисление суммы элементов побочной диагонали}
For i := 1 to N do S := S+A[i, N+1-i];
If S<>Standard then Flag := FALSE;
end;
End;
BEGIN
InputOutput; {Вызов процедуры ввода-вывода }
MagicOrNot(Flag); {Вызов процедуры решения задачи }
If Flag then WriteLn('Это магический квадрат. ')
else WriteLn('Это не магический квадрат. ');
ReadLn
END.
Другие языки программирования и технологии
Дан прямоугольный целочисленный массив размером N*N. Определить является ли данный массив магическим квадратом, т.е. сум
и что, не важно на каком языке программа?
Похожие вопросы
- Дан одномерный целочисленный массив a, состоящий из n элементов.
- Дан массив размера N.Определить количество его промежутков монотонности.
- C# Дан массив размера N. Найти 2 элемента массива, сумма которых наиболее близка к максимуму массива и поменять
- Дан линейный массив чисел N. N вводит пользователь. Вывести все простые числа массива.
- Дан массив размера N. Вывести все двузначные элементы массива и их номера. ПОМОГИТЕ pascal ХЕЛП
- Дано вещественное число R и массив размера N. Найти элемент массива, который наименее близок к данному числу
- Дан массив размера 10. Переставить в обратном порядке элементы массива, расположенные между его минимальным и максима
- Помогите решить на ПАСКАЛЕ!Увеличить четные числа массива размера N,на исходное значение первого четного числа.
- Pascal: Дано 3-значное число N.Определить,являются ли числа,из которых оно состоит членами геометрической прогрессии
- дано натуральное число N. Определить является ли оно полиндромом. Паскаль