Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
0 / 0 / 1
Регистрация: 01.04.2016
Сообщений: 76

Перевод кода из С++ в С#

07.06.2018, 19:52. Показов 1036. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток!

Пытаюсь код на C++ на C# перевести, вроде получилось, но не выходит.

Ниже представлен код на C++. Ввод и вывод не проблема, но вот функция search ,видимо, не так работает
Переменные:
C++
1
2
3
4
5
6
7
8
9
const int maxn = 100;                //максимум городов
int n, i, s, min, _count, found;        //n-количество городов
                                       //i-счетчик
                                       //s-текущая сумма
                                       //min-минимальная сумма
                                       //count-счетчик пройденных городов
                                       //found-найден ли город
int a[maxn][maxn];                //матрица рассояний
int m[maxn], minm[maxn];
Сама функция:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
void search(int x)                //поиск следующего города в порядке 
                                  //обхода после города с номером Х
{
    if ((_count == n) &&                //если просмотрели все города
        (a[x][1] != 0) &&                //из последнего города есть путь в первый город
        (s + a[x][1]<min))            //новая сумма расстояний меньше минимальной суммы
    {
        found = 1;                    //маршрут найден
        min = s + a[x][1];                //изменяем: новая минимальная сумма расстояний
        for (int i = 1; i <= n; i++)minm[i] = m[i];//изменяем: новый минимальный путь
    }
    else
    {
        for (int i = 1; i <= n; i++)     //из текущего города просматриваем все города
            if ((i != x) &&                //новый город не совпадает с текущим    
                (a[x][i] != 0) &&            //есть прямой путь из x в i
                (m[i] == 0) &&            //новый город еще не простотрен
                (s + a[x][i]<min))    //текущая сумма не превышает минимальной
            {
                s += a[x][i];                //наращиваем сумму
                _count++;                //количество просмотренных городав
                m[i] = _count;                //отмечаем у нового города новый номер в порядке обхода
                search(i);                //поиск нового города начиная с города i
                m[i] = 0;                    //возвращаем все назад
                _count--;                //-"-
                s -= a[x][i];                //-"-
            }
    }
}
А вот моя реализация на C#:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
 public void search(int town)
        {
            min_current_path = new int[number_of_town];
            if ((count_town == number_of_town) && // если просмотрели все города
                (input_matrix[town, city_start] != 0) && // из последнего города есть путь в город-старт
                (s + input_matrix[town, city_start] < min))// новая сумма расстояний меньше минимальной суммы
            {
                found = 1;
                min = s + input_matrix[town, city_start];// изменяем: новая минимальная сумма расстояний
                for (int i = 0; i < number_of_town; i++) min_current_path[i] = current_path[i]; // изменяем: новый минимальный маршрут
            }
            else
            {
                for (int i = 0; i < number_of_town; i++)
                    if ((i != town) && (input_matrix[town, i] != 0) && (current_path[i] == 0) && (s + input_matrix[town, i] < min))
                    {
                        s += input_matrix[town, i];       // наращиваем сумму
                        count_town++;                    // количество просмотренных городов
                        current_path[i] = count_town;   // отмечаем у нового города новый номер в порядке обхода
                        search(i);                     // поиск нового города начиная с города i
                        current_path[i] = 0;          // возвращаем все назад
                        count_town--;                // -"-
                        s -= input_matrix[town, i]; // -"-
                    }
            }
        }
Подскажите, пожалуйста, что неверно я сделал.
Буду рад любой подсказке!

Добавлено через 58 минут
Этот код решает замкнутую задачу коммивояжера написано было, что методом типа ветвей и границ.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
07.06.2018, 19:52
Ответы с готовыми решениями:

Перевод кода с Паскаля (перевод в метры)
var a,b,d:integer; c,e:real; begin writeln('1-дециметр 2-километр'); writeln('3-метр 4-миллиметр'); ...

Перевод кода на С++
Доброе время суток. Кто нибудь может исходный код сайта https://vk.com перевести на С++?

Перевод кода из C++ в Си
Вот собственно код, пытался переводить самостоятельно, но выходит не такое приложение, как на С++ #include &lt;stdio.h&gt; #include...

1
 Аватар для Shogun31337
557 / 534 / 225
Регистрация: 02.11.2016
Сообщений: 1,538
08.06.2018, 11:28
Цитата Сообщение от georgiisav988 Посмотреть сообщение
но вот функция search ,видимо, не так работает
не знаю насколько правильно данная функция работает на с++, но на c# она будет выглядеть точно так же. Никаких "переводов" не нужно делать.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
08.06.2018, 11:28
Помогаю со студенческими работами здесь

Перевод кода на С
#include &lt;stdio.h&gt; #include &lt;time.h&gt; #include &lt;stdlib.h&gt; int main(int argc, char *argv) { srand(time(NULL)); int i, j; ...

перевод кода из С++ в С
Кто может перевести код на С ,сделайте доброе дело.....Пожалуйста ;-) #include &lt;iostream&gt; #include &lt;iomanip&gt; #include...

Перевод кода с JS в C#
Есть код: var errors = { 0: 'Error_1', 1: 'Error_2', 2: 'Error_3', 3:...

Перевод кода С# на С++
Данный код написан на языке С#. Необходимо перевести на язык С++. namespase WindowsFormsApplication1 { public partial class...

Перевод кода с TP
program 2; uses graph,crt; const xs0=50; xp1=1.75; xs1=610; xp0=-1.75; ys0=440;yp1=1; ys1=40; yp0=-1; {granici...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru