Предмет: Информатика,
автор: msu73himich
Магический, или волшебный, квадрат — это квадратная таблица NxN, заполненная N 2 числами таким образом, что сумма чисел в каждой строке, каждом столбце и на обеих диагоналях одинакова.
Задан двумерный массив размерностью NxN. Определить, является ли он магическим квадратом.
Составить блок схему, описание решения и программу на Паскаль
Ответы
Автор ответа:
0
Программа для решения поставленной задачи - в прилагаемом файле. Отмечу, что программа далеко не оптимальная. Например, совсем не обязательно искать все суммы. Если хотя бы одна не совпала с предыдущими, то вычисления можно закончить. В комментарии в начале программы дан пример магического квадрата для проверки.
Приложения:

Автор ответа:
0
А можно составить алгоритм выполнение программы, также описание выполнение программы и скриншоты работы программы.
Автор ответа:
0
я решал так, где ошибка ? Магический, или волшебный, квадрат— это квадратная таблица NxN, заполненная N2 числами таким образом, что сумма чисел в каждой строке, каждом столбце и на обеих диагоналях одинакова.
Задан двумерный массив размерностью NxN. Определить, является ли он магическим квадратом.
Решение:
Для определения, является ли заданный массив магическим квадратом можно взять за образец сумму чисел в первом столбце или строке и сравнивать все последующие суммы с ней: если она не равна су
Задан двумерный массив размерностью NxN. Определить, является ли он магическим квадратом.
Решение:
Для определения, является ли заданный массив магическим квадратом можно взять за образец сумму чисел в первом столбце или строке и сравнивать все последующие суммы с ней: если она не равна су
Автор ответа:
0
var
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.
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.
Приложения:

Автор ответа:
0
я решал так, где ошибка ?
Похожие вопросы
Предмет: Математика,
автор: Аноним
Предмет: Биология,
автор: bohdanyablonsky1
Предмет: Қазақ тiлi,
автор: abenerkanat
Предмет: Биология,
автор: sielo