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

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

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.05.2011, 22:00   #1
waitisova
Новичок
Джуниор
 
Регистрация: 25.05.2011
Сообщений: 1
Печаль Формирование магического квадрата

Здравствуйте!

Помогите, пожалуйста, разобраться с программой формирования магического квадрата n * n , где n-четное число.

Нашел исходник на паскале, нужно перевести на c#.
Я понимаю, что элементы массива на си шарпе начинаются с 0, а не с 1 как в паскале, но перепробовав огромное количество вариантов, так ничего и не получилось.

C#:
Код:
{
    class Program
    {
        static void Main(string[] args)
        {
            int i, j, k;
 
            Console.Write("Введите размерность магическрого квадрата:");
            int n = Int32.Parse(Console.ReadLine());
            int[,] m = new int[n, n];
 
            if (n != 0 && n != 1 && n != 2 && n % 2 == 1)
            {
 
 
                i = 1; j = n / 2 + 1;
                int p = n * n;
 
                for (k = 1; k < p; k++)
                {
                    m[i, j] = k;
                    int z = k % n;
                    if (z == 0) { i++; }
                    else
                    {
                        i = i - 1; j++;
                        if (i == 0) { i = n; }
                        if (j > n) { j = 1; }
 
 
                    }
                }
 
            }
 
            else Console.WriteLine("Некорректное значение n");
 
 
 
            for (i = 0; i < n; i++)
            {
                for (j = 0; j < n; j++)
                { Console.Write(m[i, j]); }
                Console.WriteLine("");
            }
        }
 
    }
}
Паскаль (код не совсем полный, кусками из программы повыделял):
Код:
const
mn=16;
Var
    i, j, k: Integer;
    a: Array[1 .. mn, 1 .. mn] Of Integer;
  Begin
    p := True; 
 
    If Odd(n) Then
      Begin
        i := 1; j := Succ(n div 2);
        For k := 1 To Sqr(n) do
          Begin
            a[i,j] := k;
            If k mod n = 0 Then Inc(i)
            Else
              Begin
                Dec(i); Inc(j);
                If i = 0 Then i := n;
                If j > n Then j := 1
              End
          End;
      End
 
 For i := 1 To n Do
          Begin
            For j := 1 To n Do
              Write(a[i, j]: 4);
            WriteLn;
          End;
End.

Последний раз редактировалось waitisova; 25.05.2011 в 22:10.
waitisova вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Рисование квадрата KocT9 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 10 22.10.2014 11:58
Загадка квадрата. zetr0 Помощь студентам 6 17.03.2011 00:22
найти вершины квадрата dimon131 Общие вопросы C/C++ 7 23.12.2010 12:04
Качение квадрата Leshiy1 Паскаль, Turbo Pascal, PascalABC.NET 0 09.12.2010 20:20
Печать квадрата из звездочек fs444 Общие вопросы C/C++ 2 22.01.2010 14:51