Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.71/14: Рейтинг темы: голосов - 14, средняя оценка - 4.71
 Аватар для Cdvig
9 / 9 / 4
Регистрация: 08.10.2009
Сообщений: 173

перекодировать код С в код С#

08.02.2011, 08:01. Показов 2993. Ответов 29
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Вот код
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
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
#include <iostream.h>
#include <stdlib.h>
#include <math.h>
#define N 3
#define alfa 1.0
#define beta 0.5
#define gamma 2.9
#define T 1.0
 
double f (double x[N])
{
        return 3*pow((x[0]-8),2)+10*pow((x[1]-4),2)+6*pow((x[2]+6),2);
}
void intP(double P[N+1][N])
{
    int j=0,k=0;
    cout<<"Print P"<<endl;
     while (j<=N)
    {
        k=0;
        while (k<=N-1)
        { 
            cout<<"[ "<<P[j][k]<<" ]"<<"\t";
            k++;     
        }
        cout<<endl;
        j++;
    }
    cout<<endl;
}
void intF(double F[N+1])
{
    int j=0;
    cout<<"Print F"<<endl;
    while (j<=N)
    {     
        cout<<"["<<F[j]<<"]"<<"  ";
        j++;
    }
    cout<<endl<<endl;
int find_H(double  x[4])
{
        int H = 0;
        for (int j = 1; j < 4; j++)
                if (x[j] > x[H])
                        H = j;
        return H;
}
int find_L(double F[4])
{
        int L = 0;
        for (int j = 1; j < 4; j++)
                if (F[j] < F[L])
                        L = j;
        return L;
}
double find_xC(double V[4][3],int H,double  xC[3])
{
        for (int k=0;k<3;k++)
   {
      double sum=0;
                for (int j=0;j<4;j++)
      {
      sum = sum + V[j][k];
      }
      xC[k]=(sum-V[H][k])/3;
   }
   return f(xC);
}
double find_size(double F[4],double fC)
{
   double t=0;
         for (int i=0; i<4; i++)
                  t = t + (F[i]-fC)*(F[i]-fC);
         return  sqrt(1.0/(4)*t);
}
void copy_dot(double  x[3], double  y[3] )
{
        for (int j=0; j<3; j++)
           x[j]=y[j];
}
int main ()
{
        int H, L;
   double eps, fC, fE, fS, fR;
   double V[4][3],F[4];
   double xC[3], xE[3],xR[3], xS[3];
   cout << "eps = ";
        cin >> eps;
        for(int j=0;j<4;j++)
        {
      for(int k=0;k<3;k++)
        {
         if (j==0) (V[j][k]=0);
         else
                {
            if (j==k+1) (V[j][k]=(T/(3*sqrt(2)))*((sqrt(4))-1+3));
            else (V[j][k]=(T/(3*sqrt(2))))*((sqrt(4))-1);
            }
         }
      }
for (;;)
        {
    intF(F);
    intP(P);
    H = find_H(F);
    L = find_L(F);
                for (int i=0;i<3;i++)
        {
                   xC[i]= 1.0/3*((V[0][i]+ V[1][i]+V[2][i]+V[3][i])- V[H][i]);
         }
                fC = f(xC);
                if (find_size (F, fC) <= eps)
                        {
                        for(int i=0;i<3;i++)
                        {
                cout << xC[i] << endl;
                }
                        break;
                        }
                else
                {
       for (int i=0; i<3; i++)
        {
         xR[i] = xC[i] + alfa * (xC[i] - V[H][i]);
         }
       fR = f(xR);
       if (fR < F[L])
                        {
         for (int i = 0; i < 3; i++)                    
                {
            xE[i] = xC[i] + gamma * (xR[i] - xC[i]);
            }
         fE=f(xE);
         if(fE < F[L])
                {
                                copy_dot(V[H],xE);
            }
         else
                {
            copy_dot(V[H], xR);
                                }
         }
                        else
                        {
            int a;
            a=0;
            for (int i=0; i<4;i++)
               {
               if (fR >= F[i])
                {
                   if (i!=H)
                   {a=a+1;}
                   }
               }
 
                                if (a==3)
                                {
                                        if (fR < F[H])
                                                copy_dot(V[H], xR);
 
                                        for (int i=0;i<3;i++)
                {
                                                xS[i] = xC[i] + beta * (V[H][i] - xC[i]);
                  }
                                        fS = f(xS);
 
                                        if (fS<F[H])
                                                copy_dot(V[H], xS);
                                        else
                                                for (int i = 0; i < 4; i++)
                                                        for (int j = 0; j < 3; j++)
                                                                V[i][j] = V[L][j] + 0.5 * (V[i][j] - V[L][j]);
                                }
                                else
                copy_dot(V[H], xR);
                        }
           }
        }
cin.get();cin.get();
}
Блок схема:


 Комментарий модератора 
Во избежании потери информации на сторонних ресурсах загружайте файлы на форум через Вложения в Расширеном режиме редактирования сообщения.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
08.02.2011, 08:01
Ответы с готовыми решениями:

Если мне не нужно привязывать код к событию, то где размещать код?
Кто-нибудь умный ответьте. Если мне не нужно привязывать код к событию. Если мне не нужно привязывать код к &quot;кнопке&quot;,...

Код написан в Dev C. Не работает в Visual. Как нужно переделать код?
Здравствуйте. Столкнулась с такой проблемой: код был написан в Dev C, но в Visual он выдаёт ошибку. ...

Переделать исходный код. Код в Паскале,а нужно сделать его в Фортране
{$S+,R+} program arab_to_roman; uses crt; var n : word; ch : char; procedure convert(n : word);

29
 Аватар для Cdvig
9 / 9 / 4
Регистрация: 08.10.2009
Сообщений: 173
10.02.2011, 06:21  [ТС]
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Maruna Посмотреть сообщение
может есть другой способ, но вашем месте я бы создала одномерный массив нужной длины и в него бы записала то что требуется из массива V, а потом бы передала новый массив в функцию
Хмм а можно ваш совет по подробнее?
0
 Аватар для Runa
134 / 87 / 22
Регистрация: 28.08.2009
Сообщений: 363
10.02.2011, 06:50
C#
1
2
3
4
5
6
double[,] F = new double[4,2];
F[0,0] = 1; F[1,0] = 2;
double[] A = new double[4];
for (int i = 0; i < 4; i++) //здесь записываем тот столбец или колонку, которую надо
      A[i] = F[i, 0];
int H = find_H(A);
1
 Аватар для Cdvig
9 / 9 / 4
Регистрация: 08.10.2009
Сообщений: 173
10.02.2011, 07:45  [ТС]
Так, а я не понял что вы предлагаете делать с двухмерным массивом V
чтобы с его помощью вызывать функцию
C
1
copy_dot(V[H], xR);
?
0
 Аватар для Runa
134 / 87 / 22
Регистрация: 28.08.2009
Сообщений: 363
10.02.2011, 07:49
я предлагаю скопировать строку H масиива V в новый одномерный массив
в примере копировалась строка 0 и его передать в функцию.
Непонятно, что здесь неясно?
1
 Аватар для Cdvig
9 / 9 / 4
Регистрация: 08.10.2009
Сообщений: 173
10.02.2011, 09:21  [ТС]
А вроде понял =)

Добавлено через 1 час 25 минут
Нет и все таки нечего у меня не выходит немогли бы вы на примере вызвать функцию
C
1
copy_dot(V[H], xR);
?
0
 Аватар для Runa
134 / 87 / 22
Регистрация: 28.08.2009
Сообщений: 363
10.02.2011, 09:48
C#
1
2
3
4
5
double[,] F = new double[H,3];
double[] A = new double[3];
for (int i = 0; i < 3; i++) //здесь записываем тот столбец или колонку, которую надо
      A[i] = F[i, H];
copy_dot(A, xR);
1
 Аватар для Cdvig
9 / 9 / 4
Регистрация: 08.10.2009
Сообщений: 173
10.02.2011, 09:49  [ТС]
О спасибо а я вообще в другую сторону смотрел...
0
 Аватар для Runa
134 / 87 / 22
Регистрация: 28.08.2009
Сообщений: 363
10.02.2011, 10:47
только я там кажись i и H перепутала
C#
1
A[i] = F[H, i];
наверное всетаки так. Вам виднее разбиритесь строку там или столбец надо
1
 Аватар для Cdvig
9 / 9 / 4
Регистрация: 08.10.2009
Сообщений: 173
10.02.2011, 11:04  [ТС]
В обшем в самой функции
C
1
2
3
4
5
void copy_dot(double  x[3], double  y[3] )
{
        for (int j=0; j<3; j++)
           x[j]=y[j];
}
Индекс находился вне границ массива.

Добавлено через 52 секунды
вот код который я частично перевел может здесь что?
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
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
 
namespace Метод_Нелдера___Мида
{
 
    public partial class Form1 : Form
    {
        //public const int N = 3;
        public const double gamma = 2.9;
        public const double alfa = 1.0;
        public const double T = 1.0;
 
        static double f(double[] x)
        {
            return 3 * Math.Pow((x[0] - 8), 2) + 10 * Math.Pow((x[1] - 4), 2) + 6 * Math.Pow((x[2] + 6), 2);            
        }
 
        public void intP()
        {
            double[,] P = new double[4, 3];
            int j = 0, k = 0;
            while (j <= 3)
            {
                k = 0;
                while (k <= 3 - 1)
                {
                    textBox2.AppendText("[ " + P[j,k] + " ]\t");
                    k++; 
                }
                j++;
            }
 
        }
 
        public void intF()
        {
            double[] F = new double[4];
            int j = 0;
            while (j <= 3)
            {
                textBox3.AppendText("[" + F[j] + "]\t");
                j++;
            } 
        }
 
 
        static int find_H(double[] x)
        {
            int H = 0;
            for (int j = 1; j < 4; j++)
                if (x[j] > x[H])
                    H = j;
            return H;
        }
        static int find_L(double[] F)
        {
            int L = 0;
            for (int j = 1; j < 4; j++)
                if (F[j] < F[L])
                    L = j;
            return L;
        }
 
        static double find_size(double[] F, double fC)
        {
            double t = 0;
            for (int i = 0; i < 4; i++)
                t = t + (F[i] - fC) * (F[i] - fC);
            return Math.Sqrt(1.0 / (4) * t);
        }
        public void copy_dot(double[] x, double[] y)
        {
            for (int j = 0; j < 3; j++)
                x[j] = y[j];
        }
    
        public Form1()
        {
            InitializeComponent();
            int H, L;
            double eps, fC, fE, fS, fR;
            double [,] V = new double [4,3]; 
            //double [] F = new double [4];            
            double[] A = new double[3];
            double[] xC = new double[3];
            double[] xE = new double[3];
            double[] xR = new double[3];
            double[] xS = new double[3];
            eps = 1222331;
            for (int j = 0; j < 4; j++)
            {
                for (int k = 0; k < 3; k++)
                {
                    if (j == 0)
                    {
                        V[j, k] = 0;
                    }
                    else
                    {
                        if (j == k + 1)
                        {
                            V[j, k] = (T / (3 * Math.Sqrt(2))) * ((Math.Sqrt(4)) - 1 + 3);
 
                        }
                        else
                        {
                            V[j,k] = (T/(3*Math.Sqrt(2)))*((Math.Sqrt(4))-1);
                        }
                    }
         
                }
            }
 
            while (true)
            {
                intF();
                intP();
                
                H = find_H(A);
                //H = find_H(F);
                L = find_L(A);
                for (int i = 0; i < 3; i++)
                {
                    xC[i] = 1.0 / 3 * ((V[0,i] + V[1,i] + V[2,i] + V[3,i]) - V[H,i]);
                }
                fC = f(xC);
                if (find_size(A, fC) <= eps)
                {
                    for (int i = 0; i < 3; i++)
                    {
                        textBox4.AppendText(xC[i].ToString() + "\t");
                    }
                    break;
                }
                else
                {
                    for (int i = 0; i < 3; i++)
                    {
                        xR[i] = xC[i] + alfa * (xC[i] - V[H,i]);
                    }
                    fR = f(xR);
                    if (fR < A[L])
                    {
                        for (int i = 0; i < 3; i++)
                        {
                            xE[i] = xC[i] + gamma * (xR[i] - xC[i]);
                        }
                        fE = f(xE);
                        if (fE < A[L])
                        {
                            double[,] F = new double[H, 3];
                            F[0, 0] = 1; F[1, 0] = 2;
                            for (int i = 0; i < 3; i++) //здесь записываем тот столбец или колонку, которую надо
                                A[i] = F[H, i];
                            copy_dot(A, xE);
                            //copy_dot(V[H,0], xE);
                        }
                    }
            
                }
 
                break;
            }
        }
        
        
    }
}
0
 Аватар для Runa
134 / 87 / 22
Регистрация: 28.08.2009
Сообщений: 363
11.02.2011, 02:20
C#
1
double[] A = new double[3];
эта строчка означает, что индексы массива могут быть [0,2]

C#
1
2
3
4
5
6
7
8
static int find_H(double[] x)
{
            int H = 0;
            for (int j = 1; j < 4; j++)
                if (x[j] > x[H])
                    H = j;
            return H;
}
здесь массив х принимает массив А следовательно индексы должны быть теже,
а у вас j меняется [1,3], а 3 не принадлежит интервалу [0,2] вот и вся ошибка

либо массив определите
C#
1
double[] A = new double[4];
либо в функции подправьте
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
11.02.2011, 02:20

Перевести ассемблерный код TASM в программный код для архитектуры ARM
Необходимо программный код перевести в программный код языка ассемблер для архитектуры ARM, учитывая синтаксис, структуру программы и...

Очередной код с возможным вирусом. Как думаете этот код опасен?
&lt;?php // no direct access defined('_JEXEC') or die('Restricted access'); ?&gt; &lt;ul class=&quot;sections&lt;?php echo...

Слишком длинный типовой код в UserForm VBA. Как сократить код?
Программа выдает ошибку о слишком длинном коде. 1. Есть форма, в форме Multipage с 30 вкладками, на каждой вкладке 20 кнопок. 2. Тексты...

Написать код дешифровщика для Delphi 7, если есть код шифровщика?
Вот всё что есть, нужно дополнить дешифровщик, заранее спасибо кто не пройдет стороной и не будет писать не по теме &lt;3: interface ...

Нашел код в интернете. Можно ли этот код из С++ преобразовать в язык программирования C#?
Нашел код в интернете можно ли этот код из С++ преобразовать в язык программирования C#. Язык программирования C# знаю а с С++ у меня...


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

Или воспользуйтесь поиском по форуму:
30
Ответ Создать тему
Новые блоги и статьи
Вступаем в новую фазу генерации favicons, векторную.
russiannick 02.11.2026
Теперь нет нужды скрывать что используется простой svg. Исходный код изображения помещаем в поле и жмем кнопку. Исходник преобразуется в вид корректный для помещения в favicon или в url(). Нажатие. . .
Генератор паролей (вариант №4)
Maks 01.11.2026
После публикации 3-го варианта генератора паролей, разослал его своим коллегам (с целью оценки), в итоге были получены следующие рекомендации: 1. Вернуть возможность использования знаков | 1 l I;. . .
Генератор паролей (вариант №3)
Maks 30.10.2026
Финальная версия генератора паролей 1С. Доработка решения в этот раз коснулась только визуальной части, а именно, добавлен реквизит ДопПараметры (тип Булево), который скрывает/ отображает реквизиты:. . .
Магическое мышление и магия, современная наука не отличима от магии (говорит ИИ Джемени)
zorxor 30.10.2026
Джемени, расскажи, пожалуйста, что такое магическое мышление, что такое магия, почему современная наука чем-то напоминает магию? Фраза «Любая достаточно развитая технология неотличима от магии». . .
За какое время ИИ может подобрать пароль по хешу (рассказывает Джемени ИИ)
zorxor 30.10.2026
Расскажи, Джемени, если известен хэш МД5, например, за сколько ИИ сможет подобрать соответствующий пароль? Искусственный интеллект (ИИ) может подобрать простой или средний по сложности пароль по. . .
Кто убил Suno? Почему наше солнышко погасло? (диалог с ИИ Джемени)
zorxor 30.10.2026
Как убивали Suno. Хронология. «Убийство» музыкальной нейросети Suno — это затяжной процесс, в котором технологический хайп стартапа разбился о жесткую реальность судебных исков от гигантов. . .
Генератор паролей (вариант №2)
Maks 30.10.2026
Обновленная версия ранее созданной обработки. Добавлены следующие реквизиты типа Булево: - Буквы; - Цифры; - Символы. Изменена логика команды "Сгенерировать" и процедуры "ПриОткрытии":. . .
Генератор паролей (вариант №1)
Maks 29.10.2026
Реализация из решения ниже выполнена исключительно по моей инициативе, дабы облегчить себе работу в создании паролей для администрируемых мною сервисов и пользователей. Самым главным критерием для. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru