Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Программирование под Windows > .NET
Перезагрузить страницу Формирование магического квадрата
Ответ
 
Опции темы Опции просмотра
  (#1 (permalink)) Старый
MrDik MrDik вне форума
Новичок
 
Сообщений: 1
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 22.06.2016
Post Формирование магического квадрата - 22.06.2016, 14:29

Нужно реализовать формирование магического квадрата произвольной размерности с#
нечетные заполняет
четные нехочет HElp

csharp Код:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;


namespace magic_square
{
    class Program
    {
       

        static void Swap(int a, int b)
        {
            int T;

            T = a;
            a = b;
            b = T;
        }

        static void Main(string[] args)
        {
                     
            Boolean p = true;
            int i, j, k, s, b, r, m;

            System.Console.Write("Введите n = ");
            int n = Int32.Parse(Console.ReadLine());

           
            int[,] a;
            a = new int[n + 1, n + 1];


           
            if (n % 2 != 0)
            {
                i = 1;
                j = (n / 2) + 1;

                for (k = 1; k <= n * n; k++)
                {
                    a[i, j] = k;

                    if ((k % n) == 0) i++;
                    else
                    {
                        i--;
                        j++;

                        if (i == 0) i = n;
                        if (j > n) j = 1;
                    }
                }
            }
            else
            {
                if ((n % 4) == 0)
                {
                    k = 1;

                    for (i = 1; i <= n; j++)
                    {
                        for (j = 1; j <= n; j++)
                        {
                            a[i, j] = k;
                            k++;
                        }
                    }

                    j = 2; m = n / 2;

                    for (i = 1; i <= m; i++)
                    {
                        for (k = 1; k <= m / 2; k++)
                        {
                            if (j == m + 1) j = 2;
                            else
                            {
                                if (j == m + 2) j = 1;
                                s = (n - i) + 1;
                                b = (n - j) + 1;
                                Swap(a[i, j], a[s, b]);
                                Swap(a[i, b], a[s, j]);
                                j = j + 2;
                            }
                        }
                    }
                }
                else
                {
                    if (n != 2)
                    {
                        k = 1;

                        for (i = 1; i <= n; i++)
                        {
                            for (j = 1; j <= n; j++)
                            {
                                a[i, j] = k;
                                k++;
                            }

                            r = ((n / 2 - 1)) / 2;
                            m = n / 2;

                            for (i = 1; i <= m; i++)
                            {
                                j = i;

                                for (k = 1; k <= r; k++)
                                {
                                    if (j > m) j = 1;
                                    s = (n - i) + 1;
                                    b = (n - j) + 1;
                                    Swap(a[i, j], a[s, b]);
                                    Swap(a[i, b], a[s, j]);
                                    j++;
                                }
                            }

                            i = 1;
                            j = r + 1;

                            for (k = 1; k <= m; k++)
                            {
                                if (j > m) j = 1;
                                s = (n - i) + 1;
                                Swap(a[i, j], a[s, j]);
                                i++;
                                j++;
                            }

                            i = 1;
                            j = r + 2;
                            for (k = 1; k <= m; k++)
                            {
                                if (j > m) j = 1;
                                b = (n - j) + 1;
                                Swap(a[i, j], a[i, b]);
                                i++;
                                j++;
                            }
                        }
                    }
                    else p = false;
                }
            }

            if (p == true)
            {
                System.Console.Write("p = ");
                System.Console.Write(p);
                System.Console.WriteLine();

                for (i = 1; i <= n; i++)
                {
                    for (j = 1; j <= n; j++)
                    {
                        System.Console.Write(a[i, j]);
                        System.Console.Write(" ");
                    }
                    System.Console.WriteLine();
                }
            }
            else System.Console.WriteLine("do not exists");
            Console.ReadKey();
        }
    }
}
Вложения
Тип файла: txt 123.txt (4.9 Кб, 61 просмотров)

Последний раз редактировалось Alexiski; 22.06.2016 в 17:53
Ответить с цитированием
  (#2 (permalink)) Старый
Alexiski Alexiski вне форума
Любитель давать советы
 
Сообщений: 4,266
Сказал(а) спасибо: 27
Поблагодарили 54 раз(а) в 54 сообщениях
Регистрация: 16.10.2005
По умолчанию 22.06.2016, 17:59

Она ведь не тупым перебором заполняет? Алгоритм, по которому делалось, где-то описан?
Ответить с цитированием
Ads
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Формирование содержания в Word __Nataly Любые вопросы от новичков 1 24.06.2011 14:49
Формирование магического квадрата waitisova .NET 9 28.05.2011 01:38
Программа запрашивает цвет квадрата нужны коменты tASM edik12 Assembler 11 21.04.2011 01:30
Формирование стека Наташок Pascal 0 30.11.2010 15:52
Печать квадрата из звездочек с заданной стороной Gock C++ Builder 2 22.01.2010 15:52
Формирование списка вида (1 (2 2 (3 3 3 (4 4 4 4 ... (N...N))))) yaLex Lisp 3 23.11.2009 09:55
Формирование списка Free spirit Prolog 2 10.05.2009 15:45
Как реализовать распознавание образа квадрата, треугольника или круга на bmp или jpg Амира C++ Builder 1 14.05.2007 16:35
Определение магического квадрата на С++ S2DENT Вопросы начинающих программистов 1 26.12.2005 04:22
формирование отчета Korich Visual Basic 2 14.11.2005 18:14
Закраска повернутого квадрата w3d Pascal 1 30.05.2005 21:06
Формирование строки URL tonia ASP 6 29.05.2005 19:52



Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Нardforum.ru - компьютерный форум и программирование, форум программистов