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

Не могу перевести 2 переменные с С++ на С#.

08.05.2011, 16:28. Показов 781. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Суть проблемы такова. Есть код на С++ который кроме 2 переменных я удачно преобразовал.
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
static double[] Thresholds = {..Куча цифр..};
static double[] Weights = {..Куча цифр..};
static double[] Acts = new double[186];
 
void Run( double[] inputs, double[] outputs, int outputType )
        {
          int i, u;
 
            // double *w = Weights, *t = Thresholds; - Изначальный код С++
               
               double w, t;
               Weights[i] = w;     // Вот как я его преобразовал
               Thresholds[i] = t;  // И всё равно не правильно. В чём ошибка?
                
                //Этот код для чтоб' было понятно для чего нужны переменные
 
           if ( inputs[0] == -9999 )
           Acts[0] = 0.51111034577765402;
            else
           Acts[0] = inputs[0] * 48.216007714561215 + -4.313404050144646;  // И т.д до Acts[47]
 
          for ( u=0; u < 22; ++u )
          {
            /* Initialise hidden unit activation to zero */
            Acts[48+u] = 0.0;
 
            /* Accumulate weighted sum from inputs */
            for ( i=0; i < 48; ++i )
              Acts[48+u] += w++ * Acts[0+i];  // Вот где нужны переменные
 
            /* Subtract threshold */
            Acts[48+u] -= t++;                     // И вот.
 
            /* Now apply the hyperbolic activation function, ( e^x - e^-x ) / ( e^x + e^-x ).
             * Deal with overflow and underflow
             */
            if ( Acts[48+u] > 100.0 )
               Acts[48+u] = 1.0;
            else if ( Acts[48+u] < -100.0 )
              Acts[48+u] = -1.0;
            else
            {
              double e1 = Math.Exp( Acts[48+u] ), e2 = Math.Exp( -Acts[48+u] );
              Acts[48+u] = ( e1 - e2 ) / ( e1 + e2 );
            }
          }
Люди знающие подскажите.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
08.05.2011, 16:28
Ответы с готовыми решениями:

Как текст перевести в переменные?
Можноли строку вставить в код программы во время работы программы как набор переменных? Например: Есть Edit1. В нем написано: &quot;x *...

Не могу найти переменные
Есть код от гугла, немогу найти где формируется урл, и также немогу найти откуда берётся половина переменных, половину нашол, больше никак ...

Не могу подставить переменные в if
Проблема вот в чем, есть php код какой должен выводить html код. Ссылка - это document.write('4'); где цифры динамичные (я их не меняю,...

8
начал понимать msdn
57 / 57 / 6
Регистрация: 11.03.2010
Сообщений: 232
08.05.2011, 19:19
i чему равно ?
ошибка случайно, не в том, что i не присвоенно значение?
0
6 / 6 / 4
Регистрация: 27.05.2010
Сообщений: 48
08.05.2011, 19:36  [ТС]
i это же значение массива. а там значения есть.
C#
1
2
3
4
5
6
7
8
 static double[] Thresholds =
        {
        -0.62315776905562703, -0.81198473913128699, 0.3424628715211181, 0.049440097469186976,
        0.90042380616333095, 0.57504818327059959, 0.68060831920437104, 0.02147785277380421,
        -0.50271450062796297, 0.59782833360926069, 0.59904164596629195, -0.83983808269424653,
        0.30837653257937975, 0.94266173673669307, -0.948733885527834, -0.71610400145343955,
        -0.8013145417501395, -0.96478186475996264, -0.21303399940972745, -0.10039638617645646,
        -0.31991076842624516, -0.24605589287116658.........}
вот я и пишу Thresholds[i] = t Здесь у меня логика такова, поскольку там выражение Acts[48+u] -= t++ => t++ это просто переход каждый раз на другое значение массива Thresholds[0], [1], [2] и т.д.

В чём здесь у меня ошибка?
0
начал понимать msdn
57 / 57 / 6
Регистрация: 11.03.2010
Сообщений: 232
08.05.2011, 19:50
Ошибка в том, что при работе с масивом, ты забыл про цикл.
C#
1
2
3
4
5
for (int i=0 ; i<Thresholds.Leight; i++)
{
               Weights[i] = w;     // Вот как я его преобразовал
               Thresholds[i] = t;  // И всё равно не правильно. В чём ошибка?
}
Добавлено через 18 секунд
возможны ошибки, писал в браузере.

Добавлено через 10 минут
Просто в твоем случае, когда ты объявляешь переменные
C#
1
 int i, u;
то их значение null, следовательно ты пытаешься обратиться к массиву так:

C#
1
Thresholds[null]
или объявляй перменные так:
C#
1
int i=0, u=0;
или в коде присваивай им значение
C#
1
 i = 0
0
0 / 0 / 0
Регистрация: 19.04.2011
Сообщений: 6
08.05.2011, 20:18
так,а переменная w тоже не определена. зачем всему массиву весов присваивать значение w?
Weights[i] = w;

попробуй перед функцией Run. поставить параметр unsafe и передать в качестве параметров массивы Weights[] и Thresholds[]и указатели double * w, double* t

тогда сишный код // double *w = Weights, *t = Thresholds; - Изначальный код С++
будет работать.
0
начал понимать msdn
57 / 57 / 6
Регистрация: 11.03.2010
Сообщений: 232
08.05.2011, 20:42
Дружище. не вникал в код, но я думаю, когда вы исправили, на то , что я вам написал, у вас сразу же заработало.

Я не знаю, что значит переменная w, массив Weights, и все остальные переменные. тем более синтаксис и вообще язык C++
Напишите, хотябы то что вы хотите получить, от ваших строк, в которых у вас изначально была ошибка.
1
0 / 0 / 0
Регистрация: 19.04.2011
Сообщений: 6
08.05.2011, 20:46
Так не я тему создал=) я как бэ тоже человеку советовал
0
начал понимать msdn
57 / 57 / 6
Регистрация: 11.03.2010
Сообщений: 232
08.05.2011, 20:49
Alex-True, Извини, не глянул на ник
0
6 / 6 / 4
Регистрация: 27.05.2010
Сообщений: 48
09.05.2011, 15:06  [ТС]
О спасибо, действительно про i забыл(чёт' переклинило). Написал так.
C#
1
2
3
4
int i=0, u;
 
            double w = Weights[i];
            double t = Thresholds[i]; // Построение проходит успешно.
Только у меня вопрос. Вчера вечером пока сидел написал так.(Ещё до прочтения советов)
C#
1
2
3
4
5
6
7
8
 int i, u;
            double w = Weights[i]; // Это убрал за не надобностью
            double t = Thresholds[i]; // И это
 
for ( i=0; i < 48; ++i )
              Acts[48+u] += Weights[i++] * Acts[0+i];  // Вместо w++ написал Weights[i++]
 
              Acts[48+u] -= Thresholds[i++]; // Вместо t++ написал Thresholds[i++]
Это что, 2 варианта кода равнозначны? Меня в частности интересует Thresholds[i++] и Weights[i++]. Потому что 2 варианта кода удачно проходят построение.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
09.05.2011, 15:06
Помогаю со студенческими работами здесь

Не могу инициализировать переменные класса
Доброго времени суток, проблема такая: есть функция getscore (строки 92-106), всё вроде работает, ошибок нет, но в массиве score всегда...

Не могу разобраться с кодом. Переменные.
Вопрос в общем то ну очень элементарный. Для реализации своей программы мне был необходим метод касательных (Ньютона) успешно...

Не могу передать переменные из PHP в JS
Всем привет! Столкнулся с проблемой - надо подгрузить значения из БД в поля &lt;input&gt; HTML формы, при выборе нужного id из списка...

Не могу передать переменные во вторую форму
начал учить пхп. но не получается передавать переменные в след форму. Подскажите, как это сделать?

Переменные изменяются, не могу понять почему
Доброго времени суток. Я делаю платформер и пытался создать систему, которая будет определять с каких сторон персонажа окружают стены...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru