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

Внедрение одной программы в другую

14.01.2023, 19:27. Показов 1917. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток!

У меня стояла задача интегрировать свою программу которая рассчитывает величину и сохраняет данные в файл. Я это внедрил, но теперь нужно чтобы эти данные rrr[j], vsput[j] использовались дальше для расчетов, и я не знаю как это реализовать.

В той программе которую я должен был это добавить данные считываются из файла при нажатий на кнопку и строят график при помощи дополнительной компоненты XYplot( она есть в архиве).


Программа:
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
void __fastcall TForm1::Button3Click(TObject *Sender)
{
 
//изначальный код за считывание данных из файла и дальнейшего их использования( сохранение в память как я понял)
int nist, j;
if (OpenDialog2->Execute()) {
    ifstream input(OpenDialog2->FileName.c_str());
    vec FR, FF; /* для задания распределения плотности потока по радиусу мишени */
    double value1;
   input >> value1;
   while (!input.eof())  {
      FR.push_back(value1);
      input >> value1;
      FF.push_back(value1);
      input >> value1;
   }
   nist = FF.size();
 
//Построение графика, вот здесь  я пробовал менять FR на rrr[j] , FF на vsput[j]
   XYPlot1->XYPlot(FR.begin(), FF.begin(), nist, 0, clGreen);
   
 double r;
 
 
 
 
//добавлен мой код
 FILE*fp;
   if (InputOpen->Execute()) {
   fp = fopen(InputOpen->FileName.c_str(),"rt");
     if(!fp)
 
         {Application->MessageBoxA("Файл не открылся", "Ошибка", MB_OK);}
      else
         {int ii=fscanf(fp," m= %d "
           " ro= %le atom= %le "
           " l1= %le "
           " R= %le "
           " Q= %le U= %le kcur= %le kenergy= %le "
           " Ysput= %le Yself_sput= %le Mion= %le "
           " Esput= %le Eself_sput= %le "
           " S= %8s "
           ,&m,&ro,&atom,&l1,&R,&Q,&U,&kcur,&kenergy,&Ysput,&Yself_sput,&Mion,&Esput,&Eself_sput,S);
          if (ii!=15) Application->MessageBoxA("Не все данные введены",
                 "Ошибка", MB_OK);
       fclose(fp);
       }
 
   rrr.resize(m);  // координаты ячеек вдоль поверхности мишени
   q.resize(m); // плотность мощности
   vsput.resize(m); // скорость распыления при бомбардировке ионов рабочего газа
 
 
 
    // Ввод данных пространственного распределения плотности мощности вдоль поверхности мишени
    // для задания распределения плотности тока по r
   hr=R/m;  //разделение подложки на м участков
   for (j=0; j<m; j++)
   {
   rrr[j]=hr/2+hr*j;
   AnsiString S_help;
   S_help=AnsiString(S)+".txt";
   ifstream input(S_help.c_str());
   }
 
// Вот здесь скорей всего неверно, поскольку я должен вводить еще один другой файл с данными в качестве значении FR FF, но //это я смогу реализовать сам
   vec f;
   f.resize(m);
   for (j=0; j<m; j++)
      f[j]=approxd(rrr[j],nist,FR.begin(),FF.begin());
   double B=0;
   for (j=0; j<m; j++)
   {
      B=B+rrr[j]*f[j]*hr;
   }
   double A=Q/(2.0*pi*B);
   for (j=0; j<m; j++)
{
     q[j]=f[j]*A;
}
FILE* file = fopen("test2.txt", "wt");
  if (file == NULL) {
    Application->MessageBoxA("Файл не создан", "Ок", MB_OK);
    return;
    }
   for (j=0; j<m; j++)
   {
      vsput[j]=(q[j]/(U*electron)) * kcur * kenergy * Ysput/(ro * Na/atom);
      rrr[j]=hr/2+hr*j;
      fprintf(file, "%.3E %.3E\n", rrr[j], vsput[j]);
 
   }
fclose(file);
}
 
//здесь заканчивается мой код
 
 
//расчет некой величины, которую дальше нужно будет сверять( вот здесь как раз у меня используется FF FR
 for (int i=0; i<N; i++)
{
    r=sqrt(pow((X0-M[i].xm),2)+pow((Y0-M[i].ym),2));
    M[i].F=M[i].F+approxd(r,nist,FR.begin(),FF.begin())*nat; /* шт./м**2*с */
}
}
// Проверка
  Edit6->Text=AnsiString(FormatFloat("0.000E+00",M[1].xm));
  Edit7->Text=AnsiString(FormatFloat("0.000E+00",M[1].ym));
  Edit8->Text=AnsiString(FormatFloat("0.000E+00",M[1].F));
}
Пояснение по работе изначальной программы:
При нажатий слева сверху в квадратике кнопки 1, нужно вводить файл в архиве в папке test с именем test1.txt

Дальше надо нажать на кнопку подписанную 2( на деле она Button 3) и тут вылезет два раза, сначала test2.txt
а потом test3.txt

Вот как раз проблема в том что надо вводить файл для расчета, а на деле он уже рассчитывается там и выводит результат в файл названный test2.txt.

test1.txt:

Code
1
2
3
4
5
m=20
ro=7.2e3 atom=52e-3
R=0.045 lmin=0.1 K=0.15
TperK=48.0 TperA=6.0
tau=0.5
test2.txt:
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
0.001125  4.25028e-09
0.003375  1.27508e-08
0.005625  1.91058e-08
0.007875  2.3315e-08
0.010125  2.57309e-08
0.012375  2.63534e-08
0.014625  2.64849e-08
0.016875  2.61253e-08
0.019125  2.58318e-08
0.021375  2.56044e-08
0.023625  2.55947e-08
0.025875  2.58027e-08
0.028125  2.53568e-08
0.030375  2.4257e-08
0.032625  2.18497e-08
0.034875  1.81351e-08
0.037125  1.27481e-08
0.039375  5.6887e-09
0.041625  1.61927e-09
0.043875  5.39757e-10
test3.txt:
Code
1
2
3
4
5
6
7
8
m=20
ro=7.2e3 atom=52e-3
l1=6.556e-19
R=45e-3
Q=1000 U=608  kcur=0.9 kenergy=0.75
Ysput=1.3 Yself_sput=1.4 Mion=40e-3
Esput=21.78 Eself_sput=14.72
S=BxDima1
Да,я знаю что глупо вводить переменные два раза с текстового документа, следующей моей целью как раз будет обьединение изначального файла для загрузки переменных, но пока вот так.

Как мне реализовать так чтобы в дальнейшем использовались переменные rrr[j], vsput[j] вместо FR FF. Если будут вопросы спрашивайте. Заранее благодарен за любую помощь, подсказку.
Вложения
Тип файла: rar Forum.rar (549.8 Кб, 10 просмотров)
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
14.01.2023, 19:27
Ответы с готовыми решениями:

Сделать из одной программы другую
//Программа исключает диагонали матрицы, которые делят её на 4 сектора, //посчитать сумму элементов для каждого сектора и найти...

Вывод одной программы через другую
Есть 2 программы #include&lt;vector&gt; #include&lt;string&gt; #include&lt;algorithm&gt; #include&lt;iostream&gt; #include&lt;iomanip&gt; ...

Передать переменную из одной программы в другую
Здравствуйте! Как сделать чтобы одна программа передавала переменную, а другая принимала её? Например, в первой программе имеется...

2
Практикантроп
 Аватар для nick42
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
15.01.2023, 23:15
Как следует из ваших постов, - у вас на руках сторонний проект (по видимому - рабочий), который вы пробуете доработать под свои задачи. Ну или как-то так; с этим не совсем ясно. Так же, как неясно: какая возможность "для маневра" (степени свободы). Базовая программа работает с текстовыми файлами конфигурации. Но это не лучший вариант, внесение данных при помощи scanf опирается на жесткую привязку к формату текста в этих файлах, тогда как Builder располагает вполне приличным инструментарием для хранения параметров в ини-файле или реестре Виндовс. Неплохо было бы также представлять себе ваш практический "багаж" по работе с платформой Borland Builder'а.
Короче говоря: чем проще и доходчивей вы будете описывать проблему, тем больше вероятность, что к обсуждению подключатся более грамотные программеры (а не дилетанты вроде меня).
0
0 / 0 / 0
Регистрация: 31.10.2021
Сообщений: 34
16.01.2023, 09:51  [ТС]
Добрый день! Да какой же вы дилетант, мне до Вас далеко, я кстати нашел свою ошибку, а точнее опять пересмотрел файл хидер, а там как оказывается rrr and vsput тоже являются векторами и дело осталось за простым, поменять один вектор на другой, но тут почему-то дополнительная компонента XYplot начала чертить график неправильно(

По моим предположениям опять началась какая-то новая история в которой я должен разобраться.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
16.01.2023, 09:51
Помогаю со студенческими работами здесь

Передача данных из одной программы в другую
Помогите решить вот такую задачу!!!! Нужно передать данные из программы написанной на C Buildere в окно ввода другой программы которая не...

Как передать сообщение из одной программы в другую?
Например , у меня есть такой кусок кода: BOOL CALLBACK fnEnumWindowProc(HWND hwnd,LPARAM lParam){ fprintf(stdout,&quot;%8.8x\n&quot;,...

Передать значение переменной из одной программы в другую
Всем добрый вечер. Появилась такая задача:передать значение переменной из одной программы в другую ( в моём случае это переменная int...

Из одной программы передать значение переменной в другую программу (WM_COPYDATA)
Господа пытаюсь из одной программы передать значение переменной в другую , но , что то в принимающей программе как было значение - 0 так и...

запустить из одной программы другую консольную программу, передавать ей команды и получать ответ
Здравствуйте! Есть вопрос по тому, какими средствами C++ можно организовать запуск другого консольного приложения, отсылать в это...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
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
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru