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

Перевод на язык C#

15.06.2015, 13:57. Показов 1552. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток.
Помогите перевести код программки с C++ на 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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
#include <iostream>
#include <vector>
using namespace std;
 
#include <mpreal.h>
using namespace mpfr;
 
// Точность по степенному ряду
#define eps_c   "1e-50"
 
// Параметры системы уравнений Лоренца
#define sigma   10
#define r       28
#define b       8/(mpreal)3
 
// Количество бит под мантиссу вещественного числа
#define prec    180
 
// Как считать шаг: 1 - по оценке отрезка сходимости, 0 - заданная величина
#define FL_CALC 1
 
// Фиксированный шаг по времени
#define step_t  "0.02"
 
// Функция возвращает длину отрезка сходимости степенного ряда
mpreal get_delta_t(mpreal &alpha0, mpreal &beta0, mpreal &gamma0)
{
    mpreal h2 = (mpfr::max)((mpfr::max)(fabs(alpha0), fabs(beta0)), fabs(gamma0)),
           h1 = (mpfr::max)((mpfr::max)(2*sigma, r+2*h2+1), b+2*h2+1);
    mpreal h3 = h2 >= 1 ? h1 * h2 : (mpfr::max)((mpfr::max)(2*sigma, r+2), b+1);
    return 1/(h3 + "1e-10");
}
 
// Функция вычисления значений фазовых координат в конечный момент времени
// x, y и z - координаты начальной точки; T - длина отрезка интегрирования;
// way - направление поиска решений: 1 - вперед по времени, -1 - назад по времени
void calc(mpreal &x, mpreal &y, mpreal &z, mpreal T, int way = 1)
{
    cout << "\nВ начальный момент времени:\n\ndx/dt = " << sigma*(y-x) << "\ndy/dt = " <<
            r*x-y-x*z << "\ndz/dt = " << x*y-b*z << endl;
 
    mpreal t = 0, delta_t, L, p, s1, s2;
    bool fl_rp;
    do
    {
        if(FL_CALC)
            delta_t = get_delta_t(x, y, z);
        else
            delta_t = step_t;
        t += delta_t;
        if(t < T)
            fl_rp = true;
        else if(t > T)
        {
            delta_t -= t-T;
            fl_rp = false;
        }
        else
            fl_rp = false;
 
        vector<mpreal> alpha, beta, gamma;
        alpha.push_back(x);
        beta.push_back(y);
        gamma.push_back(z);
 
        int i = 0;
        L = sqrt(alpha[0]*alpha[0] + beta[0]*beta[0] + gamma[0]*gamma[0]);
        p = way * delta_t;
        while(L > eps_c)
        {
            // Вычисляем новые коэффициенты степенных рядов
            s1 = s2 = 0;
            for(int j = 0; j <= i; j++)
            {
                s1 += alpha[j] * gamma[i-j];
                s2 += alpha[j] * beta[i-j];
            }
            alpha.push_back(sigma*(beta[i] - alpha[i])/(i+1));
            beta.push_back((r*alpha[i] - beta[i] - s1)/(i+1));
            gamma.push_back((s2 - b*gamma[i])/(i+1));
 
            i++;
 
            x += alpha[i] * p;
            y += beta[i] * p;
            z += gamma[i] * p;
            L = fabs(p) * sqrt(alpha[i]*alpha[i] + beta[i]*beta[i] + gamma[i]*gamma[i]);
            p *= way * delta_t;
        }
    }
    while(fl_rp);
 
    cout << "\nКоординаты в конечный момент времени:\nx = " << x.toString() << "\ny = " <<
            y.toString() << "\nz = " << z.toString() << endl;
    cout << "\nЗначения производных:\n\ndx/dt = " << sigma*(y-x) << "\ndy/dt = " <<
            r*x-y-x*z << "\ndz/dt = " << x*y-b*z << endl;
}
 
int main()
{
    mpreal::set_default_prec(prec);
    cout << "Машинный эпсилон = " << machine_epsilon() << endl;
 
    mpreal T;
    cout << "\nВведите длину отрезка времени > ";
    cin >> T;
 
    mpreal x, y, z;
    cout << "\nx0 > ";
    cin >> x;
 
    cout << "y0 > ";
    cin >> y;
 
    cout << "z0 > ";
    cin >> z;
    cout << endl;
 
    calc(x, y, z, T);
    cout << "\n\n*** Проход назад ***\n";
    calc(x, y, z, T, -1);
 
    return 0;
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
15.06.2015, 13:57
Ответы с готовыми решениями:

Перевод на язык С#
#include &lt;iostream&gt; using namespace std; int NOD(int n, int m) { int NOD; if(n&gt;m) { int buf=m; m=n;

Перевод программы с языка C++ на язык C#
#include &lt;iostream&gt; using namespace std; int reverse_number(int number) { int n = 0; while(number) { ...

Перевод программы с языка C++ на язык C#
Есть код на языке C++. Помогите, пожалуйста, перевести, т.е. написать то же самое на языке C# . Спасибо! #include...

3
9944 / 2945 / 496
Регистрация: 05.10.2013
Сообщений: 7,998
Записей в блоге: 240
17.06.2015, 19:40
Помочь, это не значит сделать за меня. Изучайте C#
1
0 / 0 / 0
Регистрация: 10.04.2012
Сообщений: 18
22.06.2015, 08:07  [ТС]
В C# более менее разбираюсь, а с С++ проблемы, вот и попросил помочь
0
9944 / 2945 / 496
Регистрация: 05.10.2013
Сообщений: 7,998
Записей в блоге: 240
22.06.2015, 09:43
Переведите то, что сможете, чтобы не делать за вас всю работу. Я думаю, вот ввод-вывод вы сами можете перевести:
C++
1
    cout << "z0 > ";
-->
C#
1
Console.Write("z0");
Как я понял, тип mpreal используется для вещественных чисел. Замените его пока на double. А С++-ссылка эквивалентна C#-ref:

C++
1
mpreal get_delta_t(mpreal &alpha0, mpreal &beta0, mpreal &gamma0)
-->
C#
1
double get_delta_t(ref double alpha0, ref doublke beta0, ref double gamma0)
Неужели вы не сможете переписать этот фрагмент кода сами?:
Кликните здесь для просмотра всего текста
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
void calc(mpreal &x, mpreal &y, mpreal &z, mpreal T, int way = 1)
{
    cout << "\nВ начальный момент времени:\n\ndx/dt = " << sigma*(y-x) << "\ndy/dt = " <<
            r*x-y-x*z << "\ndz/dt = " << x*y-b*z << endl;
 
    mpreal t = 0, delta_t, L, p, s1, s2;
    bool fl_rp;
    do
    {
        if(FL_CALC)
            delta_t = get_delta_t(x, y, z);
        else
            delta_t = step_t;
        t += delta_t;
        if(t < T)
            fl_rp = true;
        else if(t > T)
        {
            delta_t -= t-T;
            fl_rp = false;
        }
        else
            fl_rp = false;


В общем замените всё, что сможете. А потом напишите, что не смогли заменить.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
22.06.2015, 09:43
Помогаю со студенческими работами здесь

Перевод программы с языка С на язык С++
#define _CRT_SECURE_NO_WARNINGS #include &lt;stdio.h&gt; // ЭТА БИБЛИОТЕКА ЯЗЫКА &quot;С&quot;!!! #include &lt;iostream&gt; using namespace std; ...

Перевод программы с языка C++ на язык C#
Есть код на языке C++. Помогите, пожалуйста, перевести, т.е. написать то же самое на языке C# . Спасибо! ...

перевод кода Pascal ABC на язык C#
кто поможет перевести ети коды на язык си шарп. ? я попытаося перевести но что то не получатся. вот коды 2-ух программ: var...

Перевод кода Pascal ABC на язык C# (Рисование архимедовой спирали)
uses crt,graphABC; var xc,yc,x,y,k:integer; r,f:real; begin repeat write('k k=');readln(k); until k in ; xc:=windowwidth...

Перевод на язык sql
Помогите пожалуйста перевести следующие задания: 1. Подсчитать число число строк в таблице authors, включающие одинаковые иденфикаторы...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
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-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru