Задача. Магический/Не магический квадрат - Pascal ABC

Узнай цену своей работы

Формулировка задачи:

Проверить, является ли заданная целочисленная матрица A(N, N) "магическим квадратом" (это значит, что суммы чисел во всех её строках, всех столбцах и двух диагоналях одинаковы). Решить без процедур и функций.

Решение задачи: «Задача. Магический/Не магический квадрат»

textual
Листинг программы
s:=0;
for i:=1 to n do
s:=s+a[i,i];//сумма главной диагонали
s1:=0;
for i:=1 to n do
s:=s+a[i,n-i+1];//сумма побочной диагонали
if s1<>s then
 begin
  write('Это не магический квадрат');
  exit
 end;
m:=0;
i:=1;
while(i<=n)and(m=0) do//проверяем строки
 begin
  s1:=0;
  for j:=1 to n do
  s1:=s1+a[i,j];
  if s1<>s then m:=1
  else i:=i+1;
 end;
if m=1 then
 begin
  write('Это не магический квадрат');
  exit
 end;
j:=1;
while(j<=n)and(m=0) do//проверяем столбцы
 begin
  s1:=0;
  for i:=1 to n do
  s1:=s1+a[i,j];
  if s1<>s then m:=1
  else j:=j+1;
 end;
if m=1 then  write('Это не магический квадрат')
else write('Это магический квадрат')
end.

Объяснение кода листинга программы

  1. Переменная s инициализируется значением 0.
  2. Затем происходит цикл for, который выполняется от 1 до n. Внутри этого цикла переменная s увеличивается на сумму элементов главной диагонали матрицы a[i,i] (т.е. элементов, расположенных на позициях i как по вертикали, так и по горизонтали).
  3. После этого инициализируется переменная s1 со значением 0.
  4. Затем также происходит цикл for, который выполняется от 1 до n. Внутри этого цикла переменная s1 увеличивается на сумму элементов побочной диагонали матрицы a[i,n-i+1] (т.е. элементов, расположенных на позициях i как по вертикали, так и по горизонтали, но на другой стороне от главной диагонали).
  5. Если значение переменной s1 отличается от значения переменной s, то выводится сообщение Это не магический квадрат и цикл прерывается с помощью оператора exit.
  6. Затем инициализируется переменная m со значением 0.
  7. После этого происходит цикл while, который выполняется от 1 до n и m равным 0. Внутри этого цикла переменная m инициализируется значением 1, если сумма элементов строки или столбца (в зависимости от текущей проверки) отличается от суммы главной диагонали.
  8. Если значение переменной m равно 1, то выводится сообщение Это не магический квадрат и цикл прерывается с помощью оператора exit.
  9. Если цикл завершается без прерывания, то выводится сообщение Это магический квадрат.

Оцени полезность:

6   голосов , оценка 3.833 из 5
Похожие ответы