Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
0 / 0 / 0
Регистрация: 28.05.2015
Сообщений: 20

Как правильно создать проект исходя из данного исходного кода программы?

28.01.2016, 16:00. Показов 989. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Дан пример кода программы состоящей из 5 файлов( regres.cpp, MainInterpol.h, MainInterpol.cpp, RezultInterpol.h, RezultInterpol.cpp).
Мой вопрос состоит в следующем: каким образом создавать проект и данные файлы в VS15 community?


Исходный код программы:
regres.cpp
Кликните здесь для просмотра всего текста
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
#include <vcl.h>
#pragma hdrstop
//---------------------------------------------------------------------------
USEFORM("MainInterpol.cpp", Form1);
USEFORM("RezultInterpol.cpp", Form2);
//Функция, с которой начинается выполнение программы
WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
try
{
Application->Initialize(); //Инициализация приложения
Application->Title = "Regres"; //Задание заголовка
Application->CreateForm(__classid(TForm1), &Form1); // Создание формы
Application->Run();
// Запуск обработчика событий и визуализация компонентов
} // Обработчик исключений Exception
catch (Exception &exception)
{
Application->ShowException(&exception);
}
catch (...) // Обработчик всех исключений
{
try
{
throw Exception("");
}
catch (Exception &exception)
{
Application->ShowException(&exception);
}
}
return 0;
}

MainInterpol.h
Кликните здесь для просмотра всего текста
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
//Задание стражей включения, обеспечивающих дублирования заголовочного файла
#ifndef MainInterpolH
#define MainInterpolH
//Подключение заголовочных файлов
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
#include <Chart.hpp>
#include <ExtCtrls.hpp>
#include <TeEngine.hpp>
#include <TeeProcs.hpp>
#include <Grids.hpp>
#include <Buttons.hpp>
#include <ComCtrls.hpp>
#include <Graphics.hpp>
#include <Series.hpp>
//Объявление класса формы
class TForm1 : public TForm
{
__published: // Объявление визуальных компонентов на форме
TPanel *Panel1;
TPanel *Panel2;
TChart *Chart1;
TGroupBox *GroupBox1;
TStringGrid *StringGrid1;
TLabel *Label1;
TImage *Image1;
TBitBtn *BitBtn1;
TBitBtn *BitBtn2;
TLabel *Label2;
TEdit *Edit1;
TUpDown *UpDown1;
TPointSeries *Series1;
TLineSeries *Series2;
TLabeledEdit *LabeledEdit1;
TLabeledEdit *LabeledEdit2;
TLineSeries *Series3;
TLineSeries *Series4;
//Объявление обработчиков событий
void __fastcall FormCreate(TObject *Sender);
void __fastcall UpDown1Click(TObject *Sender, TUDBtnType Button);
void __fastcall BitBtn1Click(TObject *Sender);
private: // User declarations
public: // User declarations
double k, n, d, r;
__fastcall TForm1(TComponent* Owner);
};
extern PACKAGE TForm1 *Form1;
#endif

MainInterpol.cpp
Кликните здесь для просмотра всего текста
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
#include <vcl.h>
#pragma hdrstop
#include "RezultInterpol.h"
#include "MainInterpol.h"
#include "math.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//Определение конструктора формы
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner), k(0.0), n(0.0), r(0.0), d(0.0)
{
}
//Определение инициализации формы
void __fastcall TForm1::FormCreate(TObject *Sender)
{
//Задание полей заголовка таблицы
StringGrid1->Cells[0][0] = " C";
StringGrid1->Cells[1][0] = " t";
}
//Определение обработчика нажатия на кнопку для изменения количества строк
//таблицы
void __fastcall TForm1::UpDown1Click(TObject *Sender, TUDBtnType Button)
{
StringGrid1->RowCount = UpDown1->Position + 1;
}
//Определение обработчика кнопки расчета и построения графиков
void __fastcall TForm1::BitBtn1Click(TObject *Sender)
{
//Инициализация переменных необходимых для решения задачи кинетики
d = 0.0;
int i, reg_up(0), reg_down(0);
double *y, *x, s1(UpDown1->Position - 1),
s2(0.0), s3(0.0), s4(0.0), s5(0.0), s6(0.0), ca, cb, cc, t;
//Очистка графиков после предыдущего расчета
Series1->Clear();
Series2->Clear();
Series3->Clear();
Series4->Clear();
try
{
//Создание в динамической памяти массива для хранения экспериментальных данных
y = new double[UpDown1->Position - 1];
x = new double[UpDown1->Position - 1];
if(!y || !x) throw "НЕТ свободной памяти";
//Задание начальных значений концентраций
ca = StringGrid1->Cells[0][1].ToDouble();
cb = LabeledEdit1->Text.ToDouble();cc = LabeledEdit2->Text.ToDouble();
//Проверка входных данных на допустимость значений
if(!ca || cb < 0.0 || cc < 0.0)
throw "Начальные концентрации компонентов должны быть больше 0";
for(i = 0; i < UpDown1->Position - 1; i++)
{
if(StringGrid1->Cells[0][i + 1].ToDouble() > StringGrid1->Cells[0][i + 2].ToDouble())
reg_down++;
else reg_up++;
if(StringGrid1->Cells[0][i + 1].ToDouble() == StringGrid1->Cells[0][i + 2].ToDouble())
throw "Концентрация в соседних точках должна быть различна";
if(StringGrid1->Cells[1][i + 1].ToDouble() >= StringGrid1->Cells[1][i + 2].ToDouble())
throw "Нарушение последовательности ввода времени";
if(StringGrid1->Cells[1][i+1].ToDouble()< 0||StringGrid1->Cells[0][i + 1].ToDouble()<0)
throw "Время и концентрация не могут быть отрицательными";
}
//Расчет значений локальных переменных, необходимых для решения задачи
for(i = 0; i < UpDown1->Position - 1; i++)
{
y[i] = log(fabs(StringGrid1->Cells[0][i + 2].ToDouble() –
StringGrid1->Cells[0][i + 1].ToDouble()) /
(StringGrid1->Cells[1][i + 2].ToDouble() –
StringGrid1->Cells[1][i + 1].ToDouble()));
x[i] = log(StringGrid1->Cells[0][i + 1].ToDouble());
s2 += x[i]; s3 += y[i];
s4 += x[i] * x[i];
s5 += x[i] * y[i];
s6 += y[i] * y[i];
}
//Расчет константы скорости реакции, порядка реакции, коэффициента корреляции
k = exp((s3 * s4 - s2 * s5) / (s1 * s4 - s2 * s2));
n = (s1 * s5 - s2 * s3) / (s1 * s4 - s2 * s2);
r = (s1 * s5 - s2 * s3) / sqrt((s1 * s4 - s2 * s2) * (s1 * s6 - s3 * s3));
//Построение графиков и расчет концентраций компонентов реакции
for(int i = 1; i <= UpDown1->Position; i++)
{
Series1->AddXY(StringGrid1->Cells[1][i].ToDouble(),
StringGrid1->Cells[0][i].ToDouble());
if(ca < 0) throw "Модель невозможно описать линейной регрессией";
if(i == 1)
{
Series2->AddXY(StringGrid1->Cells[1][i].ToDouble(), ca );
Series3->AddXY(StringGrid1->Cells[1][i].ToDouble(), cb );
Series4->AddXY(StringGrid1->Cells[1][i].ToDouble(), cc );
}
else
{
t = StringGrid1->Cells[1][i].ToDouble() - StringGrid1->Cells[1][i - 1].ToDouble();
Series3->AddXY(StringGrid1->Cells[1][i].ToDouble(), cb = cb + k * pow(ca, n) * t);
Series4->AddXY(StringGrid1->Cells[1][i].ToDouble(), cc = cc + k * 2*pow(ca, n)*t);if(reg_down > reg_up)
Series2->AddXY(StringGrid1->Cells[1][i].ToDouble(), ca =ca-k*pow(ca, n) * t);
else
Series2->AddXY(StringGrid1->Cells[1][i].ToDouble(), ca =ca+k*pow(ca, n) * t);
}
//расчет дисперсии
d += pow(StringGrid1->Cells[0][i].ToDouble() - ca, 2);
}
//Создание формы отображения результатов
Application->CreateForm(__classid(TForm2), &Form2);
//Отображение формы
Form2->ShowModal();
delete[]y;
delete[]x;
}
catch(char*str)
{
Series1->Clear();
Series2->Clear();
Series3->Clear();
Series4->Clear();
// Вывод сообщения об ошибке
Application->MessageBox(str, "Ошибка", MB_ICONERROR | MB_OK);
}
catch(EConvertError&)
{
// Вывод сообщения об ошибке
Application->MessageBox("Не правильный тип данных", "Ошибка",
MB_ICONERROR | MB_OK);
delete[]y;
delete[]x;
}
catch(...)
{
// Вывод сообщения об ошибке
Application->MessageBox("НЕ известная ошибка", "Ошибка",
MB_ICONERROR | MB_OK);
}
}

RezultInterpol.h
Кликните здесь для просмотра всего текста
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
#ifndef RezultInterpolH
#define RezultInterpolH
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
#include <Buttons.hpp>
#include <ExtCtrls.hpp>//---------------------------------------------------------------------------
class TForm2 : public TForm
{
__published: // IDE-managed Components
TPanel *Panel1;
TGroupBox *GroupBox2;
TLabel *Label3;
TLabel *Label4;
TEdit *Edit2;
TEdit *Edit3;
TLabel *Label1;
TEdit *Edit1;
TLabel *Label2;
TEdit *Edit4;
TBitBtn *BitBtn1;
void __fastcall FormShow(TObject *Sender);
private: // User declarations
public: // User declarations
__fastcall TForm2(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm2 *Form2;
//---------------------------------------------------------------------------
#endif

RezultInterpol.cpp
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <vcl.h>
#pragma hdrstop
#include "MainInterpol.h"
#include "RezultInterpol.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm2 *Form2;
//---------------------------------------------------------------------------
__fastcall TForm2::TForm2(TComponent* Owner)
: TForm(Owner)
{
}
//Определение обработчика отображения формы
void __fastcall TForm2::FormShow(TObject *Sender)
{//Вывод результатов расчета
Edit2->Text = FloatToStrF(Form1->n, ffGeneral, 4, 4);
Edit3->Text = FloatToStrF(Form1->k, ffGeneral, 4, 4);
Edit1->Text = FloatToStrF(Form1->d, ffGeneral, 4, 4);
Edit4->Text = FloatToStrF(Form1->r, ffGeneral, 4, 4);
}

Доп инфа:
Кликните здесь для просмотра всего текста
Программа состоит из двух форм (окон), представленных на рисунках 4 и
5 соответственно и позволяющих вводить начальные данные и отображать
результаты расчета. Программа включает пять исходных файлов программы:
regres.cpp, MainInterpol.h, MainInterpol.cpp, RezultInterpol.h, RezultInterpol.cpp.
Ниже приведен состав файлов с подробными комментариями.
Графический интерфейс включает следующие классы визуальных
компонентов: формы TForm, изображения TImage, панели TPanel, группы
элементов TGroupBox, метки TLabel, однострочный редактор текста с меткой
TLabeledEdit, график TChart, кнопки TButton, компонент для ввода и изменения
числовых значений TUpDown, таблица TStringGrid, и.т.д.

Кликните здесь для просмотра всего текста
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
28.01.2016, 16:00
Ответы с готовыми решениями:

Создать проект с использованием существующего исходного кода
Здравствуйте, уважаемые форумчане! Помогите пожалуйста с таким вопросом: есть готовые .cpp и .h файлы, в которых я инклюжу другие исходники...

Как правильно разделить файл исходного кода?
Имеем работающий код на ВС++ 6 (более 10 тысяч строк) в одном *.cpp Нужно разделить его на несколько файлов. Конкретнее: ...

Как правильно создать проект?
Добрый день. В универе есть у нас замечательный предмет &quot;функциональное программирование&quot; все учат лисп, я же как ярый приверженец...

8
Эксперт .NET
 Аватар для Usaga
14093 / 9310 / 1349
Регистрация: 21.01.2016
Сообщений: 34,983
28.01.2016, 17:15
Вообще, эти файлы явно были написаны в среде Builder C++. Вы хотите переписать программу на Visual C++ или просто ветку перепутали?
0
0 / 0 / 0
Регистрация: 28.05.2015
Сообщений: 20
28.01.2016, 17:31  [ТС]
да по моему были разработаны в билдере с++,но я работаю в среде vs15(если много и сложно переделывать, то скачаю билдер, просто думал без разницы в каком компиляторе работать, а так лучше в visuale сделать).
0
Эксперт .NET
 Аватар для Usaga
14093 / 9310 / 1349
Регистрация: 21.01.2016
Сообщений: 34,983
28.01.2016, 18:04
В коде вашей программы используется VCl - библиотека специфичная для билдера. Используйте билдер для работы с этим кодом, не зачем всё переписывать...
0
0 / 0 / 0
Регистрация: 28.05.2015
Сообщений: 20
28.01.2016, 18:06  [ТС]
А в нем как надо будет просто создать данные файлы, или есть определенный способ(какой тип проекта использовать, какие файлы в нем создавать)?
0
Эксперт .NET
 Аватар для Usaga
14093 / 9310 / 1349
Регистрация: 21.01.2016
Сообщений: 34,983
28.01.2016, 19:45
Ну, я билдером последний раз пользовался сто лет назад))) Возможно, что вполне достаточно будет создать пустой проект графической исполняемой программы (не консольной и не библиотеки) и просто добавить в него существующие файлы.

А ещё лучше уточните у ребят в разделе С++\BuilderC++. Просто данная ветка посвящена немного другой разновидности С++ - управляемой...
1
0 / 0 / 0
Регистрация: 28.05.2015
Сообщений: 20
29.01.2016, 12:09  [ТС]
спасибо, сегодня попробую.

Добавлено через 14 часов 13 минут
у меня есть вопрос по созданию кода этой программы.
Для начала я создал проект (Application), потом добавил новый проект (Application), и открыл View source. Правильно делаю? или там есть определенные правила настройки?

Добавлено через 33 минуты
Или есть какая-то незамеченная мной способность создать в проекте новую форму.

Добавлено через 29 минут
Все теперь как создавать формы в проекте понял. Че то до этого не замечал.
0
Практикантроп
 Аватар для nick42
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
29.01.2016, 12:21
wertyhr, должны быть файлы с расширением .dfm, связанные с аналогичными .cpp. Если их нет, - придется всю расстановку компонентов делать вручную.
0
0 / 0 / 0
Регистрация: 28.05.2015
Сообщений: 20
29.01.2016, 12:27  [ТС]
В папке куда сохранил проект есть такие файлы. Спасибо за подсказку.

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

Добавлено через 54 секунды
Поэтому сейчас изучаю компоненты билдера чтоб понять куда что ставить)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
29.01.2016, 12:27
Помогаю со студенческими работами здесь

Как правильно создать проект на С++5.02, чтобы можно было работать с WIN API?
Помогите,пожалуйста, устранить ошибку при линковании: Unresolved external '_main' referenced fromD/../C0X32.obj. Что необходимо...

Как создать тестовый проект для программы
Здравствуйте. Как создать тестовый проект для программы на С++(пишу в консоли)? Запускаю New Test-&gt;Unit Test... Но мой TestProject...

Visual Studio 2013 - Как правильно завершить проект и создать install со своим значком
Подскажите пожалуйста, как правильно поступить при завершении проекта. То есть получается после VS по завершению публикации имею 3 файла -...

Обработка исходного кода программы
Всем привет! Пришлось надолго уехать вкомандировку, а потому отложить начатое дело. Теперь снова к нему вернулся. Процесс освоения VC++...

Защита исходного кода программы
Какие есть нормальные бесплатные протекторы? PECompact - не хочет работать TheMida Free - большой размер выходящего файла + окошечно...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка. Рецензия / Мнение/ Перевод https:/ / **********/ gallery/ thinkpad-x220-tablet-porn-gzoEAjs . . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru