Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.01.2011, 19:12   #1
morgan97
Пользователь
 
Регистрация: 08.01.2011
Сообщений: 28
Сообщение Магический квадрат

подскажите идею как сделать магический квадрат с помощью двумерного массива
morgan97 вне форума Ответить с цитированием
Старый 25.01.2011, 20:05   #2
Alter
Старожил
 
Аватар для Alter
 
Регистрация: 06.08.2007
Сообщений: 2,183
По умолчанию

Источник
Код:
Пример 3. Дан двумерный массив размером N´N. Выяснить, является ли этот массив магическим квадратом.

Решение: магический квадрат — это двумерный массив размерности N´N, в котором все суммы элементов по столбцам и по строкам одинаковы. Поэтому для проверки можно поступить следующим образом:

1.        Вычислим сумму первой строки и обозначим эту сумму, через S. Ясно, что все последующие суммы должны быть равны S;

2.        Будем вычислять суммы столбцов и строк и сравнивать их с S. Если хотя бы одна сумма окажется не равна S, то этот квадрат не является магическим, в противном случае он действительно магический. В программе введем величину K, которая изначально пусть равна 1, и если нашлась сумма не равная S, то пусть K=0. Если по окончанию работы программы K=1, то квадрат магический, если же K=0, то квадрат магическим не является.

Примечание 

В данном алгоритме есть один существенный недостаток. Возможно, вы уже на первом шаге сможете обнаружить, что данный квадрат не является магическим, но алгоритм, тем не менее, будет продолжать свою работу. Конечно, было бы значительно эффективнее, если бы программа прекращала свою работу сразу, как только обнаружит сумму, отличную от вычисленной первой.

Program example;

  Uses crt;

  Var

    a:array[1..10,1..10] of integer;

    i,j,n,s,w,k,q:integer;

begin

  clrscr;

  write('Ввести размерность квадрата =');readln(n);

  for i:=1 to n do

    for j:=1 to n do

      begin

        write('A(',j,',',i,')=');readln(a[j,i]);

      end;

    s:=0;

    for i:=1 to n do

      s:=s+a[1,i];

    k:=1;

    for i:=1 to n do

      begin

        w:=0;q:=0;

        for j:=1 to n do

          begin

            w:=w+a[j,i];

            q:=q+a[i,j];

          end;

        if (s<>w)or(q<>s) then k:=0;

      end;

    if k=0 then write('Квадрат не является магическим')

    else write('Квадрат магический');

end.
http://ru.wikipedia.org/wiki/Магичес...82.D0.BE.D0.B2
Alter вне форума Ответить с цитированием
Старый 26.01.2011, 19:21   #3
morgan97
Пользователь
 
Регистрация: 08.01.2011
Сообщений: 28
По умолчанию

это немного не то надо чтобы он сам строил магический квадрат подскажите как надо делать проверки
morgan97 вне форума Ответить с цитированием
Старый 26.01.2011, 20:15   #4
DM_bite
Участник клуба
 
Аватар для DM_bite
 
Регистрация: 29.07.2008
Сообщений: 1,091
По умолчанию

Цитата:
Сообщение от morgan97 Посмотреть сообщение
это немного не то надо чтобы он сам строил магический квадрат подскажите как надо делать проверки
Непонятно, что именно понимать под "сам строил магический квадрат"... Есть множество способов сделать это. К примеру вводить элементы матрицы вручную. А проверять надо лишь одно условие - суммы элементов всех строк, столбцов, главной и побочной диагоналей должны быть равны.
Кто бы ты ни был - не думай о себе слишком (с)
DM_bite вне форума Ответить с цитированием
Старый 07.04.2011, 19:10   #5
Crabobass
Пользователь
 
Регистрация: 06.03.2011
Сообщений: 23
По умолчанию

Он имел в виду полную генерацию квадрата. Щас сам бьюсь над этой задачей...
Crabobass вне форума Ответить с цитированием
Старый 09.04.2011, 17:10   #6
Serg Belyaev
Пользователь
 
Аватар для Serg Belyaev
 
Регистрация: 22.01.2008
Сообщений: 17
По умолчанию

На этой страничке приведены соответствующие генераторы магических квадратов порядков 4 и 5.
Всего доброго,
<SVB>
Serg Belyaev вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
магический квадрат Irk-O Помощь студентам 3 11.10.2010 13:00
Магический квадрат Nur_lan_ Фриланс 7 17.01.2010 21:47
Магический квадрат Arman Tokanov Помощь студентам 7 27.10.2009 15:42
Магический квадрат Гаджи Помощь студентам 5 24.10.2009 09:46
Магический квадрат Anarx Паскаль, Turbo Pascal, PascalABC.NET 2 18.12.2008 13:07