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

Как скомпилировать приложение

12.12.2013, 18:01. Показов 743. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
в Си совсем не шарю, но есть острая необходимость создать программу, есть ее код:
MyForm.cs
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
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 TaySystem
{
    public partial class MyForm : Form
    {
        float xScale, yScale, //множители по осям
            height, width; //размеры координатной сетки
        float xZeroOffcet, yZeroOffcet; //смещение точки (0,0) от левого угла формы
        Cell myCell; //звено
        Graphics draw;
        Pen pen;
        List<PointF> points; //список точек для отрисовки звена
        
        public MyForm()
        {
            InitializeComponent();
            draw = this.CreateGraphics();
            myCell = new Cell();
            height = 400; width = 400;
            xZeroOffcet = 0; yZeroOffcet = 0;
            pen = new Pen(Color.Black, 1);
            points = new List<PointF>();
        }
        
        /// <summary>
        /// Генерирует координатную сетку
        /// </summary>
        /// <param name="xMinBound"></param>
        /// <param name="yMinBound"></param>
        /// <param name="xMaxBound"></param>
        /// <param name="yMaxBound"></param>
        void GenerateWave(int xMinBound, int yMinBound, int xMaxBound, int yMaxBound)
        {
            this.Refresh();
 
            int swap = yMinBound;
            yMinBound = yMaxBound * (-1); //меняем местами границы по У, т.к. у окна ось У напривлена вниз
            yMaxBound = swap * (-1);
 
            xScale = width / (xMaxBound - xMinBound); // расчет множителей по Х и У квадратики
            yScale = height / (yMaxBound - yMinBound);
 
            pen.Color = Color.Black;
            pen.Width = 1;
            
            for (int i = 0; xMinBound < xMaxBound + 1; i++, xMinBound ++) //вертикальные линии
            {
                if (xMinBound == 0) //нулевая ось
                {
                    xZeroOffcet = i * xScale;// смещение оси х // расстояние от края формы до нулевой оси
                    pen.Width = 2;
                }
                draw.DrawLine(pen, i * xScale, 0, i * xScale, height);
                pen.Width = 1;
            }
            for (int i = 0; yMinBound < yMaxBound + 1; i++, yMinBound ++) //горизонтальные линии
            {
                if (yMinBound == 0) //нулевая ось
                {
                    yZeroOffcet = i * yScale;
                    pen.Width = 2;
                }
                draw.DrawLine(pen, 0, i * yScale, width, i * yScale);
                pen.Width = 1;
            }
        }
 
        private void updateButton_Click(object sender, EventArgs e)// звено, нажали кнопку
        {
            //задаем параметры звена
            myCell.T1 = (float)t1NumericUpDown.Value; 
            myCell.T2 = (float)t2NumericUpDown.Value; 
            myCell.K = (float)kNumericUpDown.Value;
            myCell.T = (float)offcetNumericUpDown.Value;
 
            //генерируем новую координатную сетку
            GenerateWave((int)XminUpDown.Value,
                        (int)YminUpDown.Value, 
                        (int)XmaxUpDown.Value,
                        (int)YmaxUpDown.Value);
 
            if(radioButton1.Checked) //кривая переходного процесса
                points = myCell.CalculateFunction2(); //получаем точки
 
            if (radioButton2.Checked) //афчх
            {
                points = myCell.CalculateFunction1((float)XmaxUpDown.Value);//получаем точки
            }
            if (points.Count == 0) { MessageBox.Show("Не инерционное звено!"); return; }
            for (int i = 0; i < points.Count-1; i++) //строим кривую
            {
                pen.Color = Color.Blue;
                pen.Width = 2;
                draw.DrawLine(pen, points[i].X * xScale + xZeroOffcet,
                                   points[i].Y * yScale * (-1) + yZeroOffcet,
                                   points[i + 1].X * xScale + xZeroOffcet,
                                   points[i + 1].Y * yScale * (-1) + yZeroOffcet
                                   );
                draw.DrawLine(pen, points[0].X, points[0].Y, points[0].X, points[0].Y);
            }
            points.Clear();
        }
 
        private void MyForm_Activated(object sender, EventArgs e) //это чтобы координатная сетка сгенерировалась сразу после запуска
        {
            GenerateWave((int)XminUpDown.Value,
                        (int)YminUpDown.Value,
                        (int)XmaxUpDown.Value,
                        (int)YmaxUpDown.Value);
        }
 
        private void radioButton1_CheckedChanged(object sender, EventArgs e)
        {
            XminUpDown.Value = -5;
            YminUpDown.Value = -5;  //если меняем, что рисовать, то меняем и границы сетки
            XmaxUpDown.Value = 5;
            YmaxUpDown.Value = 5;
            GenerateWave((int)XminUpDown.Value, //заного генерируем сетку
                        (int)YminUpDown.Value,
                        (int)XmaxUpDown.Value,
                        (int)YmaxUpDown.Value);
        }
 
        private void radioButton2_CheckedChanged(object sender, EventArgs e)
        {
            XminUpDown.Value = -1;
            YminUpDown.Value = -1;
            XmaxUpDown.Value = 20;
            YmaxUpDown.Value = 5;
            GenerateWave((int)XminUpDown.Value,
                        (int)YminUpDown.Value,
                        (int)XmaxUpDown.Value,
                        (int)YmaxUpDown.Value);
        }
    }
}

Cell.cs
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
using System;
using System.Collections.Generic;
using System.Text;
using System.Drawing;
 
namespace TaySystem
{    
    class Cell
    {
        //параметры звена
        public float K { get; set; }
        public float T1 { get; set; }
        public float T2 { get; set; }
        public float T { get; set; }
 
        double d;//коэффициент затухания
        float Re, Im; //реальная/мнимая составляющие K(jw)
        List<PointF> points;
 
        public Cell()
        {
            K = 0; T1 = 0; T2 = 0; T = 0;
            d = 0;
            points = new List<PointF>();
        }
 
        /// <summary>
        /// Возвращает кривую переходного процесса в виде точек
        /// </summary>
        /// <returns></returns>
        public List<PointF> CalculateFunction1(float time)
        {
            d = T1 / (2 * T2);
            if (d < 1) { return points; }
            else
            {
                float p1 = T1 / (T1 - T2); ; //1 корень уравнения RE
                float p2 = T2 / (T1 - T2); //2 корень уравнения Im
 
                float y = 0;
                if (T > 0) //если есть задержка, формируем ее на графике
                {
                    points.Add(new PointF(0, 0));
                    points.Add(new PointF(T, 0));
                }
                for (float i = 0; i < time - T; i += 0.5f)
                {
                    y = K * (1 - p1 * //хитрая формула для рассчета кривой
                                (float)Math.Exp(-i / T1) +                        //переходного процесса
                                p2 * (float)Math.Exp(-i / T2));
                    points.Add(new PointF(i + T, y));
                }
            }
            return points; 
        }
        /// <summary>
        /// Возвращает АФЧХ в виде точек
        /// </summary>
        /// <returns></returns>
        public List<PointF> CalculateFunction2()
        {
            d = T1 / (2 * T2);
            if (d < 1) { return points; }
            else
            {
                for (float W = 0.0001f; W < 10; W += 0.01f)
                {
                    float g = (1 - T2 * W * W) * (1 - T2 * W * W) + T1 * T1 * W * W; //знаменатель 
                    Re = K * (1 - T2 * W * W) * (float)Math.Cos(-W * T) / g + K * W * T1 * (float)Math.Sin(-W * T) / g;
                    Im = K * (1 - T2 * W * W) * (float)Math.Sin(-W * T) / g - K * W * T1 * (float)Math.Cos(-W * T) / g;
                    points.Add(new PointF(Re, Im));
                }
            }
            return points;
        }
        
    }
}

внешний вид

Как скомпилировать приложение


помогите пожалуйста или подскажите что надо сделать, с чего начать. А то я смотрю на эту стену кода как баран на новые ворота
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.12.2013, 18:01
Ответы с готовыми решениями:

Как скомпилировать приложение
Здравствуйте ) я начинающий, и прошу помощи как скомпилировать релиз ? Пишу проги , но хочу...

Как скомпилировать приложение под Windows Server 2003?
Добрый вечер! Такая проблема: скомпилированное приложение работает на Win7 и Win8, но не...

Как скомпилировать С# приложение, для работы без .NET Framework
Доброго времени суток вам! Вопрос в том, что нужно написать приложение на чистом С#, но...

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

4
Администратор
Эксперт .NET
9602 / 4744 / 761
Регистрация: 17.04.2012
Сообщений: 9,592
Записей в блоге: 14
12.12.2013, 18:20 2
tarodix, а в чём заключается проблема? Код программы уже есть, что создать надо?
0
0 / 0 / 0
Регистрация: 12.12.2013
Сообщений: 3
12.12.2013, 18:21  [ТС] 3
сам .ехе файл, чтобы можно было запустить и пользоваться
0
Администратор
Эксперт .NET
9602 / 4744 / 761
Регистрация: 17.04.2012
Сообщений: 9,592
Записей в блоге: 14
12.12.2013, 18:32 4
tarodix, это точно все файлы? MyForm.Designer.cs нигде не завалялся?
0
0 / 0 / 0
Регистрация: 12.12.2013
Сообщений: 3
12.12.2013, 18:35  [ТС] 5
нет, это все что у меня есть 8(
0
12.12.2013, 18:35
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.12.2013, 18:35
Помогаю со студенческими работами здесь

Динамически скомпилировать приложение
Например, как создать генератор приложения, в котором будет показываться сообщение введенное в...

Готовое приложение скомпилировать под Linux
Ситуация такая. Есть написанное в VS 2008 на C#/ C++ консольное приложение( решение прилагаю). Как...

Не знаю как скомпилировать
Нашел програму на С# (Применение нечёткой логики на примере простой модели зарядного устройства для...

Как скомпилировать файл *.cs
подскажите что нужно сделать для компилсяции файла /* * Created by SharpDevelop. * User:...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru