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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.11.2010, 23:02   #1
sigmanen
 
Регистрация: 02.11.2010
Сообщений: 7
Смущение рандомизировать Магический квадрат

Вот программа которая строит магический квадрат 3*3:
Код:
#include<iostream>
#include<conio.h>

int main()
{
     int size=3;

     int max_size=size+(size-1);
 
     int**pMagic_square = new  int*[max_size];
     for (int i=0; i<max_size; i++)
        pMagic_square[i]=new int[max_size];
     int i;
     int j;
     for (i=0; i<max_size; i++)
     for (j=0; j<max_size; j++)
     pMagic_square[i][j]= 0;
      int k=1;
     i=(max_size>>1);
     j=0;
     while (i<max_size){
         int i1=i;
         int j1=j;
         int gr=size>>1; //gr-расстояние от границы увеличенного массива
         while (j1<((j+(max_size>>1))+1)){
             pMagic_square[i1][j1]=k;
             if ((i1>(gr)) && (j1<(gr))) //left
                pMagic_square[i1][j1+size]=k;
             if ((i1>(size+gr)-1) && (j1>(gr)))
                pMagic_square[i1-size][j1]=k; //down
             if ((i1<(gr)) && (j1>(gr)))
                pMagic_square[i1+size][j1]=k; //up
             if ((i1>(gr)) && (j1>(size+gr)-1))
                pMagic_square[i1][j1-size]=k; //right
             --i1;
             ++j1;
             ++k;
         }
         ++i;
         ++j;
     }
     std::cout<<std::endl<<"Magic square: "<<std::endl;
     for (i=(size-1)>>1; i<=max_size-(size>>1)-1; i++ ){
         for (j=(size-1)>>1; j<=max_size-(size>>1)-1; j++ )
             std::cout << pMagic_square[i][j] << " ";
         std::cout << std::endl;
     }

     for (int i = 0; i < max_size; ++i)

     getch ();
     return 0;

}
как зделать так чтобы при каждом открытии программы выводился квадрат с новыми членами?
sigmanen вне форума Ответить с цитированием
Старый 02.11.2010, 23:52   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
как зделать так чтобы при каждом открытии программы выводился квадрат с новыми членами?
не на чем проверить Вашу программку.
Но, если речь идёт о нормальном магическом квадрате (это заполненном цифрами от 1 до 9), то их всего 8

основной:
4 9 2
3 5 7
8 1 6

Цитата:
Существует единственный магический квадрат 3x3 ,так как остальные магические квадраты 3x3 получаются из него либо поворотом вокруг центра, либо отражением относительно одной из его осей симметрии
Serge_Bliznykov вне форума Ответить с цитированием
Старый 03.11.2010, 08:27   #3
sigmanen
 
Регистрация: 02.11.2010
Сообщений: 7
По умолчанию

Я просто пишу игру о магических квадратах и мне бы вот эту программу как-нибудь включить в основную. можна как то прояснить вот эту часть.
Код:
     while (i<max_size){
         int i1=i;
         int j1=j;
         int gr=size>>1; //gr-расстояние от границы увеличенного массива
         while (j1<((j+(max_size>>1))+1)){
             pMagic_square[i1][j1]=k;
             if ((i1>(gr)) && (j1<(gr))) //left
                pMagic_square[i1][j1+size]=k;
             if ((i1>(size+gr)-1) && (j1>(gr)))
                pMagic_square[i1-size][j1]=k; //down
             if ((i1<(gr)) && (j1>(gr)))
                pMagic_square[i1+size][j1]=k; //up
             if ((i1>(gr)) && (j1>(size+gr)-1))
                pMagic_square[i1][j1-size]=k; //right
             --i1;
             ++j1;
             ++k;
Это НЕ МОЯ программа, я только её немного изменил.
sigmanen вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 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