profile
Опубликовано 6 лет назад по предмету Информатика от msu73himich

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

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