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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.12.2017, 16:58   #1
Georgii98
Пользователь
 
Регистрация: 02.12.2016
Сообщений: 11
По умолчанию Помогите переписать код с С++ на C#

Добрый вечер!
Столкнулся с проблемой, что мой переделанный на C# код не работает.
Код на C++

Код:
void swap(int *a, int *b)
{
    int t;
 
    t = *a;
    *a = *b;
    *b = t;
}
 
void reverse(int * P, int m)
{
    int i = 0, j = m;
    while (i<j)
    {
        swap(&P[i], &P[j]);
        ++i;
        --j;
    }
}
 
void antilex(int * P, int m)
{
    int i;
 
    if (m == 0)
    {
        for (i = 0; i<N; ++i)
            printf("%d ", P[i]);
        printf("\n");
    }
    else
    {
        for (i = 0; i <= m; ++i)
        {
            antilex(P, m - 1);
            if (i<m)
            {
                swap(&P[i], &P[m]);
                reverse(P, m - 1);
            }
        }
    }
}
Код на C#
Код:
private void FuncSwap(Int32 a, Int32 b)
        {
            int l;
            l = a;
            a = b;
            b = l;
 
        }
        private void FuncRevers(Int32[] P,Int32 m)
        {
           int i = 0, j = m;
            while (i < j)
            {
                FuncSwap(P[i], P[j]);
                ++i;
                --j;
            }
 
        }
        private void FuncPermutation(Int32[] P, int m)
        {
            int i;
 
            if (m == 0)
            {
                for (i = 0; i < N; ++i)
                {
                    sb.AppendFormat("\t ", P[i], "\n");
                    AnswerList.Items.Add(sb);
                    sb.Clear();
                }
                AnswerList.Items.Add("");
 
            }
            else
            {
                for (i = 0; i <= m; ++i)
                {
                    FuncPermutation(P, m - 1);
                    if (i < m)
                    {
                        FuncSwap(P[i], P[m]);
                        FuncRevers(P, m - 1);
                    }
                }
            }
        }
Georgii98 вне форума Ответить с цитированием
Старый 04.12.2017, 17:15   #2
coremission
Форумчанин
 
Аватар для coremission
 
Регистрация: 09.11.2017
Сообщений: 121
По умолчанию

Ну конечно не работает, вы в swap по значению передаете параметры!

Надо так:

private void FuncSwap(ref Int32 a, ref Int32 b)
{
int l;
l = a;
a = b;
b = l;

}

и вызов тоже со словами ref перед аргументами
Профессионально программирую видео-игры. Пишу бекстейдж-блог о разработке игр CoreMission.net.
Разрабатываю календарь выхода игр.
coremission вне форума Ответить с цитированием
Старый 04.12.2017, 18:03   #3
Georgii98
Пользователь
 
Регистрация: 02.12.2016
Сообщений: 11
По умолчанию

Код:
 static void FuncSwap(ref int a, ref int b)
        {
            int l;
            l = a;
            a = b;
            b = l;

        }
      static  void FuncRevers(int[] P, int m)
        {
            int i = 0, j = m;
            while (i < j)
            {
                FuncSwap(ref P[i],ref P[j]);
                ++i;
                --j;
            }

        }

       static void FuncPermutation(int[] P, int m)
        {
            int i;

            if (m == 0)
            {
                for (i = 0; i < m; i++)
                {
                    Console.WriteLine(Convert.ToString(P[i]));
                }
                

            }
            else
            {
                for (i = 0; i <= m; i++)
                {
                    FuncPermutation(P, m - 1);
                    if (i < m)
                    {
                        FuncSwap(ref P[i],ref P[m]);
                        FuncRevers(P, m - 1);
                    }
                }
            }
        }

        static void Main(string[] args)
        {
            int N = 4;
            int[] P = new int[N];
            for (int i = 0; i < N; i++)
            {
                P[i] = i + 1;
            }

            FuncPermutation(P, N-1);
            Console.ReadKey();

        }
Проверил в консоле, все равно ничего не выводится.
Georgii98 вне форума Ответить с цитированием
Старый 04.12.2017, 19:51   #4
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Код:
if (m == 0)
            {
                for (i = 0; i < m; i++)
И почему он не выводит?..
p51x на форуме Ответить с цитированием
Старый 04.12.2017, 20:10   #5
Georgii98
Пользователь
 
Регистрация: 02.12.2016
Сообщений: 11
По умолчанию

p51x, то и значит. При запуске, открывается консоль и все. Никаких цифр, ничего нет.
Georgii98 вне форума Ответить с цитированием
Старый 04.12.2017, 20:20   #6
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Мда... Код смотрите! У вас m == 0 и цикл до m, т.е. от 0 до < 0. Может не зря у вас в С++ коде в этом цикле была другая буква?
p51x на форуме Ответить с цитированием
Старый 04.12.2017, 20:28   #7
Georgii98
Пользователь
 
Регистрация: 02.12.2016
Сообщений: 11
По умолчанию

p51x, хмм, и то верно, не заметил этого.
Прошу прощения за грубость.
И благодарю за помощь!
Georgii98 вне форума Ответить с цитированием
Старый 05.12.2017, 10:46   #8
coremission
Форумчанин
 
Аватар для coremission
 
Регистрация: 09.11.2017
Сообщений: 121
По умолчанию

Вы ведь всегда можете пройти отладчиком и понять что не так. Посмотреть почему не доходит до вывода в консоль. Отладчик - ваш лучший друг.
Профессионально программирую видео-игры. Пишу бекстейдж-блог о разработке игр CoreMission.net.
Разрабатываю календарь выхода игр.
coremission вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
пытаюсь переписать код из С++ в питон. Код внутри. Верно ли я делаю? clav9nski Python 2 08.10.2017 21:34
Помогите, пожалуйста, переписать код приложения по TCP клиент-сервер в UDP клиент - сервер... KhNJu C/C++ Сетевое программирование 3 12.03.2017 23:43
Помогите переписать код на Си ZeroBlur Помощь студентам 6 24.05.2015 00:54
Помогите переписать код Garmata Помощь студентам 1 26.11.2013 18:53
Код игры на Паскале и на Делфи сильно отличается? Как переписать код с Паскаля в Делфи? Mclaren Помощь студентам 2 27.04.2009 22:37