Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
anomal_mish_ka
Сообщений: n/a
#1

Конвертировать программу из с# в с++ - C++

21.10.2011, 13:44. Просмотров 720. Ответов 2
Метки нет (Все метки)

Доброго всем времени суток=)), Народ помогите конвертировать программу из с# в с++
Надо аппроксимировать заданную исходную функцию f(x) многочленом на интервале [a, b]. Задано количество неизвестных параметров n, вид аппроксимации и m – количество точек, в которых задана функция.
Таблица исходной функции yi=f(xi) вычисляется в точках xi = a + (i −1)(b − a) /(m −1), i =1, m. Используя полученную таблицу (xi , yi ), требуется вычислить значения функций f (x j ), ϕ(x j ,c) построить графики и проанализировать качество полученной аппроксимации.

Заранее спасибо.

Вариант:
ln(x) − 5sin(x)^2 Линейная PNL
a=3, b=6, m=11, n=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
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
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;
using ZedGraph;
namespace MetodLaGranga
{
    public partial class Form1 : Form
    {
        double[] Xj = new double[21];
        double[] Yj = new double[21];
        double[] Fj = new double[21];
        public Form1()
        {
            InitializeComponent();
            dataGridView1.AllowUserToAddRows = false;
            dataGridView2.AllowUserToAddRows = false;
 
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            label1.Visible = true;
            dataGridView1.Rows.Clear();
            dataGridView1.Rows.Add(11);
            
        }
 
        private void button2_Click(object sender, EventArgs e)
        {
            dataGridView1.Visible = true;
            dataGridView2.Visible = true;
            double [] x = new double [11];
            double [] y = new double [11];
            for (int i = 0; i < 11; i++)
            {
                x[i] = 3 + (double)i * 6 / 10;
                dataGridView1.Rows[i].Cells[0].Value = Math.Round(x[i],4).ToString();
                y[i] = Math.Log(x[i], 10) - 5 * Math.Pow(Math.Sin(x[i]), 2);
                dataGridView1.Rows[i].Cells[1].Value = Math.Round(y[i], 4).ToString();
            }
 
            dataGridView2.Rows.Clear();
            
            dataGridView2.Rows.Add(21);
 
            for (int  i = 0; i < 21; i++)
            {
                Xj[i] = 3 + (double)i * 6 / 20;
 
                Yj[i] = Math.Log(x[i], 10) - 5 * Math.Pow(Math.Sin(x[i]), 2);
               // MessageBox.Show(Xj[i].ToString());
                dataGridView2.Rows[i].Cells[0].Value = Math.Round(Xj[i],2).ToString();
                dataGridView2.Rows[i].Cells[1].Value = Math.Round(Yj[i],6).ToString();
            }
             //new double();
            for (int r = 0; r < 21; r++)
            {
                if ((Xj[r] >= x[0]) && (Xj[r] <= x[10]))
                {
                    int i = 1;
                QWER:
                    if (Xj[r] > x[i])
                    {
                        i++;
                        goto QWER;
                    }
                    else
                    {
                        Fj[r] = y[i - 1] + (Xj[r] - x[i - 1]) * (y[i] - y[i - 1]) / (x[i] - x[i - 1]);
                        dataGridView2.Rows[r].Cells[2].Value = Math.Round(Fj[r], 3).ToString();
                    }
                }
                else 
                {
                    dataGridView2.Rows[r].Cells[2].Value = "За пределами таблицы!"; 
                }
            }
            for (int i = 0; i < 21; i++)
            {
                dataGridView2.Rows[i].Cells[3].Value = Math.Round(Math.Abs(Yj[i]-Fj[i]),3).ToString();
            }
        }
 
        private void button4_Click(object sender, EventArgs e)
        {
            zedGraphControl1.Visible = true; 
            CreateGraph(zedGraphControl1); // строим график
            SetSize(); // и устанавливаем его положение и размер             
        }
 
        private void CreateGraph(ZedGraphControl zgc)
        {
            GraphPane myPane = zgc.GraphPane;
            myPane.CurveList.Clear();
            // Задаем название графика и сторон
            myPane.Title.Text = "Графики фунции";
            myPane.XAxis.Title.Text = "Ось X";
            myPane.YAxis.Title.Text = "Ось Y";
            // --------------------------------
           
            PointPairList list1 = new PointPairList();
            for (int i = 0; i < 21; i++)
            {
                list1.Add(Xj[i],Yj[i]);
            }
 
            PointPairList list2 = new PointPairList();
            for (int i = 0; i < 21; i++)
            {
                list2.Add(Xj[i], Fj[i]);
            }
            // ----------------
            // отрисовываем график
            LineItem myCurve = myPane.AddCurve("f(x)", list1, Color.Blue, SymbolType.Square);
            zgc.AxisChange();
            LineItem myCurve1 = myPane.AddCurve("u(x,c)", list2, Color.Red, SymbolType.Square);
            zgc.AxisChange();
        }
 
        // Фунция изменения размера и положения графика в зависимости от размера формы
        private void SetSize()
        {
            //zedGraphControl1.Location = new Point(3, 3); // задаем положение графика
            zedGraphControl1.Size = new Size(ClientRectangle.Width - 100, ClientRectangle.Height - 100); // размеры графика
        }
 
        private void button3_Click(object sender, EventArgs e)
        {
            zedGraphControl1.Visible = false;
        }
    }
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.10.2011, 13:44     Конвертировать программу из с# в с++
Посмотрите здесь:
C++ Конвертировать из с в с++
Конвертировать doc в pdf с++ C++
C++ Python код конвертировать в C++
С Java на C++ можно ли конвертировать? C++
C++ конвертировать char* в time_t C++
C++ Конвертировать float в *char???
C++ Конвертировать string в LPCWSTR
конвертировать UnicodeString в char* C++
Конвертировать клавишу в VK_KEY C++
Как конвертировать файл в base64? C++
Как конвертировать Unicode в Ansi? C++
C++ Malloc. Конвертировать void в int.

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
gooseim
Эксперт С++
508 / 412 / 37
Регистрация: 23.09.2010
Сообщений: 1,159
21.10.2011, 13:51     Конвертировать программу из с# в с++ #2
anomal_mish_ka, конвертировать в Managed C++ или native C++?
anomal_mish_ka
Сообщений: n/a
25.10.2011, 17:11     Конвертировать программу из с# в с++ #3
Цитата Сообщение от gooseim Посмотреть сообщение
anomal_mish_ka, конвертировать в Managed C++ или native C++?
Cпасибо я уже разобрался=)) Если нужен мой проект обращайтесь=))
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru