В
Все
М
Математика
О
ОБЖ
У
Українська мова
Х
Химия
Д
Другие предметы
Н
Немецкий язык
Б
Беларуская мова
М
Музыка
Э
Экономика
Ф
Физика
Б
Биология
О
Окружающий мир
У
Українська література
Р
Русский язык
Ф
Французский язык
П
Психология
О
Обществознание
А
Алгебра
М
МХК
Г
География
И
Информатика
П
Право
А
Английский язык
Г
Геометрия
Қ
Қазақ тiлi
Л
Литература
И
История
AntonBobko
AntonBobko
01.02.2021 08:25 •  Информатика

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

Показать ответ
Ответ:
MITSUHA
MITSUHA
17.09.2020 13:54
Программа для решения поставленной задачи - в прилагаемом файле. Отмечу, что программа далеко не оптимальная. Например, совсем не обязательно искать все суммы. Если хотя бы одна не совпала с предыдущими, то вычисления можно закончить. В комментарии в начале программы дан пример магического квадрата для проверки.
Магический, или волшебный, квадрат — это квадратная таблица nxn, заполненная n 2 числами таким образ
0,0(0 оценок)
Ответ:
alenkaabramovic
alenkaabramovic
17.09.2020 13:54
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.
0,0(0 оценок)
Популярные вопросы: Информатика
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота