
Магический, или волшебный, квадрат — это квадратная таблица NxN, заполненная N 2 числами таким
образом, что сумма чисел в каждой строке, каждом столбце и на обеих диагоналях одинакова. Задан двумерный массив размерностью NxN. Определить, является ли он магическим квадратом. Составить блок схему, описание решения и программу на Паскаль

Ответы на вопрос




i,j,n:integer;
m: array[1..10,1..10] of integer;
flag:boolean;
sum: array[0..1] of longint;
begin
readln(n);
flag:=true;
for i:=1 to n do
begin
for j:=1 to n do
read(m[i,j]);
readln;
end;
//Проверяем строки
i:=1;
for j:=1 to n do
sum[i mod 2]:=sum[i mod 2]+m[i,j];
while ((i<n) and flag) do
begin
i:=i+1;
for j:=1 to n do
sum[i mod 2]:=sum[i mod 2]+m[i,j];
if sum[0]<>sum[1] then flag:=false;
sum[(i+1) mod 2]:=0;
end;
//Проверяем столбцы
sum[0]:=0;
sum[1]:=0;
j:=1;
for i:=1 to n do
sum[j mod 2]:=sum[j mod 2]+m[i,j];
while ((j<n) and flag) do
begin
j:=j+1;
for i:=1 to n do
sum[j mod 2]:=sum[j mod 2]+m[i,j];
if sum[0]<>sum[1] then flag:=false;
sum[(j+1) mod 2]:=0;
end;
sum[0]:=0;
sum[1]:=0;
j:=1;
for i:=1 to n do
begin
sum[0]:=sum[0]+m[i,j];
sum[1]:=sum[1]+m[n-i+1,j];
j:=j+1;
end;
if sum[0]<>sum[1] then flag:=false;
if flag then writeln('Магический');
end.



Магический квадрат, или волшебный квадрат, это квадратная таблица размером NxN, где каждая ячейка заполнена числом, таким образом, что сумма чисел в каждой строке, каждом столбце и на обеих диагоналях одинакова. Вам нужно определить, является ли заданный двумерный массив размером NxN магическим квадратом.
Блок-схема решения:
1. Создать переменную `sum` и инициализировать ее нулем. 2. Проверить, что все строки, столбцы и диагонали имеют одинаковую сумму. 3. Если условие выполняется, то массив является магическим квадратом. В противном случае, массив не является магическим квадратом.Описание решения:
Для определения, является ли заданный двумерный массив магическим квадратом, мы должны проверить, что сумма чисел в каждой строке, каждом столбце и на обеих диагоналях одинакова.Мы можем использовать следующий алгоритм для проверки:
1. Создаем переменную `sum` и инициализируем ее нулем. 2. Перебираем все строки и столбцы массива и добавляем числа в переменную `sum`. 3. Проверяем, что сумма чисел в каждой строке и столбце равна `sum`. 4. Проверяем, что сумма чисел на главной и побочной диагоналях равна `sum`. 5. Если все условия выполняются, то массив является магическим квадратом. В противном случае, массив не является магическим квадратом.
Программа на Паскаль:
```pascal program MagicSquare;const N = 3; // Размерность массива NxN
type MagicSquareArray = array[1..N, 1..N] of Integer;
function IsMagicSquare(arr: MagicSquareArray): Boolean; var i, j, sum: Integer; begin sum := 0; // Проверка суммы чисел в каждой строке for i := 1 to N do begin sum := 0; for j := 1 to N do sum := sum + arr[i, j]; if sum <> N * (N * N + 1) div 2 then begin IsMagicSquare := False; Exit; end; end; // Проверка суммы чисел в каждом столбце for j := 1 to N do begin sum := 0; for i := 1 to N do sum := sum + arr[i, j]; if sum <> N * (N * N + 1) div 2 then begin IsMagicSquare := False; Exit; end; end; // Проверка суммы чисел на главной диагонали sum := 0; for i := 1 to N do sum := sum + arr[i, i]; if sum <> N * (N * N + 1) div 2 then begin IsMagicSquare := False; Exit; end; // Проверка суммы чисел на побочной диагонали sum := 0; for i := 1 to N do sum := sum + arr[i, N - i + 1]; if sum <> N * (N * N + 1) div 2 then begin IsMagicSquare := False; Exit; end; IsMagicSquare := True; end;
var square: MagicSquareArray; i, j: Integer; begin // Заполнение массива for i := 1 to N do for j := 1 to N do begin Write('Введите число для ячейки [', i, ', ', j, ']: '); ReadLn(square[i, j]); end; // Проверка, является ли массив магическим квадратом if IsMagicSquare(square) then WriteLn('Данный массив является магическим квадратом.') else WriteLn('Данный массив не является магическим квадратом.'); end. ```
Программа запрашивает у пользователя числа для заполнения ячеек массива размером NxN. Затем она вызывает функцию `IsMagicSquare`, которая проверяет, является ли массив магическим квадратом. Результат проверки выводится на экран.
Примечание: В приведенной программе размерность массива `N` задана константой и равна 3. Вы можете изменить значение константы `N` в соответствии с вашими требованиями.


Топ вопросов за вчера в категории Информатика
Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili