Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.92/25: Рейтинг темы: голосов - 25, средняя оценка - 4.92
2 / 2 / 2
Регистрация: 14.12.2013
Сообщений: 120
1

Обращение одной программы к другой

17.05.2014, 08:55. Показов 5242. Ответов 21
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте. Я написал программу, которая интегрирует функцию методом правых прямоугольников. И отдельно я написал программу, которая строит график этой функции. И теперь мне нужно чтобы первая программа, после интегрирования функции, обращалась ко второй программе и производилось построение графиков. Как это можно сделать? Пишу курсовую, очень нужно
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.05.2014, 08:55
Ответы с готовыми решениями:

Запуск одной программы из другой
Здравствуйте для начала :) Задача казалась весьма простой, мне нужно запустить одну программу...

Обращение к БД на одной форме, а заполнение с другой
Доброго времени суток! Работаю над проектом, столкнулся с проблемой: есть несколько форм (пока две)...

Обращение к свойствам одной формы из другой
Имеются две формы: MainForm(главная) и EditForm(редактирование свойств главной формы). Подскажите...

Обращение из одной формы к TLabel на другой
Нужно вывести текст в label1, который находиться на 2-ой форме. А кнопка для нажатии находится на...

21
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
17.05.2014, 09:18 2
Цитата Сообщение от zaqwerty Посмотреть сообщение
И отдельно я написал программу, которая строит график этой функции.
Что за программа? Оформите её в виде функции, вызывайте из первой.

Добавлено через 8 минут
Или наоборот.
1
2 / 2 / 2
Регистрация: 14.12.2013
Сообщений: 120
17.05.2014, 17:14  [ТС] 3
alsav22, дело в том, что у меня два файла - Курсовая.cpp и График.cpp. Нужно, чтобы программа в Курсовая.cpp выполнилась и после обратилась к График.cpp, и программа в этом файле тоже бы выполнилась.
0
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
17.05.2014, 17:28 4
Цитата Сообщение от zaqwerty Посмотреть сообщение
дело в том, что у меня два файла - Курсовая.cpp и График.cpp. Нужно, чтобы программа в Курсовая.cpp выполнилась и после обратилась к График.cpp, и программа в этом файле тоже бы выполнилась.
Не вижу проблем. Предложение остаётся в силе.
Цитата Сообщение от alsav22 Посмотреть сообщение
Оформите её в виде функции, вызывайте из первой. Или наоборот.
1
2 / 2 / 2
Регистрация: 14.12.2013
Сообщений: 120
17.05.2014, 22:09  [ТС] 5
alsav22, а... как можно оформить эту функцию? Как она вообще выглядит? И как с помощью этой функции вызвать вторую программу?

Добавлено через 4 часа 38 минут
alsav22, нашел кое-что про внешние функции... То есть нужно прописать в файле Курсовая.cpp extern f1, создать в файле График.cpp так же отсылку к этой функции, и с помощью ключа gcc обращаться ко второй программе?
0
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
17.05.2014, 22:39 6
Цитата Сообщение от zaqwerty Посмотреть сообщение
как можно оформить эту функцию? Как она вообще выглядит?
Как функцию оформить. Как реализация функции выглядит знаете? Что-то конкретно могу предложить, если код увижу.

Добавлено через 1 минуту
И на вопрос не ответили:
Цитата Сообщение от alsav22 Посмотреть сообщение
Что за программа?
Рисование графика функции чем реализовано (в С++ нет поддержки графики)?
1
2 / 2 / 2
Регистрация: 14.12.2013
Сообщений: 120
17.05.2014, 22:44  [ТС] 7
alsav22, ниже представлены коды программ.
Курсовая.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
#include <stdio.h>
#include <iostream>
#include <conio.h>
#include <math.h>
#include <locale>
#define IN "C:\\Users\\st1a3sea\\Desktop\\labs\\input.txt"
float a,b,c,n1,n2;
float f1(float x)
{return a*pow(x,3)+b*x+c;}
float f2(float x)
{return a*sin(x+b)+c;}
float f3(float x)
{return a*log(fabs(x+b))+c;}
int main()
{
setlocale(LC_ALL,"Russian");
using namespace std;
float s1p=0,s2p=0,s3p=0,s1t=0,s2t=0,s3t=0,h,as1,as2,as3,os1,os2,os3;
int n,i,ans;
float p[500];
printf ("Êàêèì îáðàçîì õîòèòå çàäàòü ïåðåìåííûå?\n 1) Ñ êëàâèàòóðû\n 2) Èç ôàéëà\n");//????? ?????? ?? ?????
scanf("%d", &ans);// ?????? ?????? ? ?????????? ans
switch(ans)
{
case 1:
    {
        printf("Ââåäèòå a=");// ????? ?????? ?? ?????
scanf("%f", &a);// ?????? ?????? ? ?????????? a
        printf("Ââåäèòå b=");// ????? ?????? ?? ?????
        scanf("%f", &b);// ?????? ?????? ? ?????????? b
        printf("Ââåäèòå c=");// ????? ?????? ?? ?????
        scanf("%f", &c);// ?????? ?????? ? ?????????? c
        printf("Ââåäèòå ÷èñëî èíòåðâàëîâ ðàçáèåíèÿ n=");// ????? ?????? ?? ?????
       scanf("%d", &n);// ?????? ?????? ? ?????????? n
       if((n<0)||(n>500))
    {
                printf("Íåâåðíîå ÷èñëî èíòåðâàëîâ ðàçáèåíèÿ\n");// ????? ?????? ?? ?????
                //system("pause");
                return 1;
           }
                printf("Ââåäèòå íèæíèé ïðåäåë èíòåãðèðîâàíèÿ n1=");// ????? ?????? ?? ?????
 scanf("%f", &n1);// ?????? ?????? ? ?????????? n1
 printf("Ââåäèòå âåðõíèé ïðåäåë èíòåãðèðîâàíèÿ n2=");// ????? ?????? ?? ?????
scanf("%f", &n2);// ?????? ?????? ? ?????????? n2
if((n1<-1000)||(n1>1000)||(n2<-1000)||(n2>1000))
 {
    printf("Íåâåðíûå ïðåäåëû èíòåãðèðîâàíèÿ. Íóæíî ââåñòè ïðåäåëû èíòåãðèðîâàíèÿ â çàäàííîì äèàïàçîíå \n");// ????? ?????? ?? ?????
        //system("pause");
        return 1;
}
break;
}
case 2:
{
        freopen(IN,"r",stdin);
         scanf("%f%f%f%d%f%f", &a,&b,&c,&n,&n1,&n2);
         if((n>500)||(n<0))
      {printf("Íåâåðíîå ÷èñëî èíòåðâàëîâ ðàçáèåíèÿ\n");// ????? ?????? ?? ?????
                 //system("pause");
        return 1;
                 }
         if((n1<-1000)||(n1>1000)||(n2<-1000)||(n2>1000))
         {
          printf("Íåâåðíûå ïðåäåëû èíòåãðèðîâàíèÿ. Íóæíî ââåñòè ïðåäåëû èíòåãðèðîâàíèÿ â çàäàíîì äèàïàçîíå\n");// ????? ?????? ?? ?????
                  //system("pause");
        return 1;
          }
                 break;
}
default:
        {
                printf("Íåîáõîäèìî âûáðàòü äåéñòâèå 1 èëè äåéñòâèå 2");
                //system("pause");
                return 1;
}
}
printf("a=%f\n",a);
printf("b=%f\n",b);
printf("c=%f\n",c);
printf("n=%d\n",n);
printf("n1=%f\n",n1);
printf("n2=%f\n",n2);
    h=(n2-n1)/n;
    for (i=1; i<=n;i++)
    {
        p[i]=n1+i*h;
    }
    for (float x=p[1]; x<=p[n]; x+=h)
    {s1p+=f1(x);
      s2p+=f2(x);
      s3p+=f3(x);
    }
    s1p*=h;
    s2p*=h;
    s3p*=h;
    printf("s1p=%f\n",s1p);
    printf("s2p=%f\n",s2p);
    printf("s3p=%f\n",s3p);
    for(float x=n1; x<=n2; x+=(n2-n1))
    {if(x=n1)
        {
        s1t-=((a*pow(x,4))/4+((b*pow(x,2))/2)+c*x);
        s2t-=(-a*cos(x+b)+c*x);
        s3t-=(a*log(x+b)+c*x);
}
        if(x=n2)
        {
            s1t+=((a*pow(x,4))/4+((b*pow(x,2))/2)+c*x);
            s2t+=(-a*cos(x+b)+c*x);
            s3t+=(a*log(x+b)+c*x);
        }
    }
        printf("s1t=%f\n",s1t);
        printf("s2t=%f\n",s2t);
        printf("s3t=%f\n",s3t);
        as1=fabs(s1t-s1p);
        as2=fabs(s2t-s2p);
        as3=fabs(s3t-s3p);
        os1=as1/fabs(s1p);
        os2=as2/fabs(s2p);
        os3=as3/fabs(s3p);
        printf("as1=%f\n",as1);
        printf("as2=%f\n",as2);
        printf("as3=%f\n",as3);
        printf("os1=%f\n",os1);
        printf("os2=%f\n",os2);
        printf("os3=%f\n",os3);
        getch();
}
График.сpp
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
#include <stdio.h>
#include <graphics.h>
#include <math.h>
#include <locale>
const int X0=400;
const int Y0=400;
const float xmin=-10;
const float xmax=10;
int main()
{
setlocale(LC_ALL,"Russian");
float b,xmin=-10,xmax=10,h=0.001,a,x,y,c;
int l;
printf("Âûáåðèòå ãðàôèê\n 1) y=a*x*x*x+b*x+c\n 2) y=a*cos(x+b)+c\n 3) y=a*log(fabs(x+b))+c;\n");
scanf("%d",&l);
if(l==1)
{
printf ("Ââåäèòå çíà÷åíèå a=");
scanf("%f",&a);
printf ("Ââåäèòå çíà÷åíèå b=");
scanf("%f",&b);
printf("Ââåäèòå çíà÷åíèå c=");
scanf("%f", &c);
initwindow(800,800);
line (X0,0,X0,799);
line (0,Y0,799,Y0);
 
for (x=xmin;x<=xmax;x+=h)
{
  y=a*x*x*x+b*x+c;
 
 putpixel(x+X0,-y+Y0, 3);
 
}
}
else
if(l==2)
{
   printf ("Ââåäèòå çíà÷åíèå a=");
scanf("%f",&a);
printf ("Ââåäèòå çíà÷åíèå b=");
scanf("%f",&b);
printf("Ââåäèòå çíà÷åíèå c=");
scanf("%f", &c);
initwindow(800,800);
line (X0,0,X0,799);
line (0,Y0,799,Y0);
 
for (x=xmin;x<=xmax;x+=h)
{
  y=a*cos(x+b)+c;
 
 putpixel(x+X0,-y+Y0, 4);
 
} }
else
if(l==3)
{
   printf ("Ââåäèòå çíà÷åíèå a=");
scanf("%f",&a);
printf ("Ââåäèòå çíà÷åíèå b=");
scanf("%f",&b);
printf("Ââåäèòå çíà÷åíèå c=");
scanf("%f", &c);
initwindow(800,800);
line (X0,0,X0,799);
line (0,Y0,799,Y0);
 
for (x=xmin;x<=xmax;x+=h)
{
  y=a*log(fabs(x+b))+c;
 
 putpixel(x+X0,-y+Y0, 5);
 
} }
else
{printf("Íåîáõîäèìî âûáðàòü ãðàôèê 1, ãðàôèê 2 èëè ãðàôèê 3");}
getch();
return 1;
}
0
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
18.05.2014, 00:03 8
Укажите, в первом коде, строки, где нужно рисовать графики. И вот это не сравнение:
Цитата Сообщение от zaqwerty Посмотреть сообщение
if(x=n1)
Добавлено через 47 минут
Функция рисования графиков может так выглядеть (четвёртым параметром передаётся номер графика):
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
void painter(float a, float b, float c, int n)
{
    const int X0=400;
    const int Y0=400;
    float xmin=-10,xmax=10,h=0.001,x,y;
    
    initwindow(800,800);
    line (X0,0,X0,799);
    line (0,Y0,799,Y0);
    if (n == 1)
    {
        for (x=xmin;x<=xmax;x+=h)
        {
            y=a*x*x*x+b*x+c;
 
            putpixel(x+X0,-y+Y0, 3);
        }
    }
    if (n == 2)
    {
        for (x=xmin;x<=xmax;x+=h)
        {
            y=a*cos(x+b)+c;
 
            putpixel(x+X0,-y+Y0, 4);
 
        }
    }
    if (n == 3)
    {
        for (x=xmin;x<=xmax;x+=h)
        {
            y=a*log(fabs(x+b))+c;
 
            putpixel(x+X0,-y+Y0, 5);
        } 
    }
}
1
2 / 2 / 2
Регистрация: 14.12.2013
Сообщений: 120
18.05.2014, 08:54  [ТС] 9
alsav22, в первой программе мне нужно, чтобы графики рисовались сразу после выполнения самой программы, а именно после подсчета и вывода абсолютной и относительной погрешностей (as и os).
И вот это не сравнение
То есть нужно так записать?
C++
1
if(x==n1)
0
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
18.05.2014, 09:05 10
Цитата Сообщение от zaqwerty Посмотреть сообщение
То есть нужно так записать?
Странные вопросы задаёте. Первый день с С++ знакомы?
Цитата Сообщение от zaqwerty Посмотреть сообщение
в первой программе мне нужно, чтобы графики рисовались сразу после выполнения самой программы, а именно после подсчета и вывода абсолютной и относительной погрешностей (as и os).
Добавьте второй код в конец первого:
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
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
#include <stdio.h>
#include <iostream>
#include <conio.h>
#include <math.h>
#include <locale>
#include <graphics.h>
 
#define IN "C:\\Users\\st1a3sea\\Desktop\\labs\\input.txt"
 
float a,b,c,n1,n2;
float f1(float x)
{return a*pow(x,3)+b*x+c;}
float f2(float x)
{return a*sin(x+b)+c;}
float f3(float x)
{return a*log(fabs(x+b))+c;}
 
int main()
{
setlocale(LC_ALL,"Russian");
using namespace std;
float s1p=0,s2p=0,s3p=0,s1t=0,s2t=0,s3t=0,h,as1,as2,as3,os1,os2,os3;
int n,i,ans;
float p[500];
printf ("Каким образом хотите задать переменные?\n 1) С клавиатуры\n 2) Из файла\n");//????? ?????? ?? ?????
scanf("%d", &ans);// ?????? ?????? ? ?????????? ans
switch(ans)
{
case 1:
    {
        printf("Введите a=");// ????? ?????? ?? ?????
scanf("%f", &a);// ?????? ?????? ? ?????????? a
        printf("Введите b=");// ????? ?????? ?? ?????
        scanf("%f", &b);// ?????? ?????? ? ?????????? b
        printf("Введите c=");// ????? ?????? ?? ?????
        scanf("%f", &c);// ?????? ?????? ? ?????????? c
        printf("Введите число интервалов разбиения n=");// ????? ?????? ?? ?????
       scanf("%d", &n);// ?????? ?????? ? ?????????? n
       if((n<0)||(n>500))
    {
                printf("Неверное число интервалов разбиения\n");// ????? ?????? ?? ?????
                //system("pause");
                return 1;
           }
                printf("Введите нижний предел интегрирования n1=");// ????? ?????? ?? ?????
 scanf("%f", &n1);// ?????? ?????? ? ?????????? n1
 printf("Введите верхний предел интегрирования n2=");// ????? ?????? ?? ?????
scanf("%f", &n2);// ?????? ?????? ? ?????????? n2
if((n1<-1000)||(n1>1000)||(n2<-1000)||(n2>1000))
 {
    printf("Неверные пределы интегрирования. Нужно ввести пределы интегрирования в заданном диапазоне \n");// ????? ?????? ?? ?????
        //system("pause");
        return 1;
}
break;
}
case 2:
{
        freopen(IN,"r",stdin);
         scanf("%f%f%f%d%f%f", &a,&b,&c,&n,&n1,&n2);
         if((n>500)||(n<0))
      {printf("Неверное число интервалов разбиения\n");// ????? ?????? ?? ?????
                 //system("pause");
        return 1;
                 }
         if((n1<-1000)||(n1>1000)||(n2<-1000)||(n2>1000))
         {
          printf("Неверные пределы интегрирования. Нужно ввести пределы интегрирования в заданом диапазоне\n");// ????? ?????? ?? ?????
                  //system("pause");
        return 1;
          }
                 break;
}
default:
        {
                printf("Необходимо выбрать действие 1 или действие 2");
                //system("pause");
                return 1;
}
}
printf("a=%f\n",a);
printf("b=%f\n",b);
printf("c=%f\n",c);
printf("n=%d\n",n);
printf("n1=%f\n",n1);
printf("n2=%f\n",n2);
    h=(n2-n1)/n;
    for (i=1; i<=n;i++)
    {
        p[i]=n1+i*h;
    }
    for (float x=p[1]; x<=p[n]; x+=h)
    {s1p+=f1(x);
      s2p+=f2(x);
      s3p+=f3(x);
    }
    s1p*=h;
    s2p*=h;
    s3p*=h;
    printf("s1p=%f\n",s1p);
    printf("s2p=%f\n",s2p);
    printf("s3p=%f\n",s3p);
    for(float x=n1; x<=n2; x+=(n2-n1))
    {if(x==n1)
        {
        s1t-=((a*pow(x,4))/4+((b*pow(x,2))/2)+c*x);
        s2t-=(-a*cos(x+b)+c*x);
        s3t-=(a*log(x+b)+c*x);
}
        if(x==n2)
        {
            s1t+=((a*pow(x,4))/4+((b*pow(x,2))/2)+c*x);
            s2t+=(-a*cos(x+b)+c*x);
            s3t+=(a*log(x+b)+c*x);
        }
    }
        printf("s1t=%f\n",s1t);
        printf("s2t=%f\n",s2t);
        printf("s3t=%f\n",s3t);
        as1=fabs(s1t-s1p);
        as2=fabs(s2t-s2p);
        as3=fabs(s3t-s3p);
        os1=as1/fabs(s1p);
        os2=as2/fabs(s2p);
        os3=as3/fabs(s3p);
        printf("as1=%f\n",as1);
        printf("as2=%f\n",as2);
        printf("as3=%f\n",as3);
        printf("os1=%f\n",os1);
        printf("os2=%f\n",os2);
        printf("os3=%f\n",os3);
        
 
const int X0=400;
const int Y0=400;
const float xmin=-10;
const float xmax=10;
 
float x,y;
h=0.001;
int l;
printf("Выберите график\n 1) y=a*x*x*x+b*x+c\n 2) y=a*cos(x+b)+c\n 3) y=a*log(fabs(x+b))+c;\n");
scanf("%d",&l);
if(l==1)
{
printf ("Введите значение a=");
scanf("%f",&a);
printf ("Введите значение b=");
scanf("%f",&b);
printf("Введите значение c=");
scanf("%f", &c);
initwindow(800,800);
line (X0,0,X0,799);
line (0,Y0,799,Y0);
 
for (x=xmin;x<=xmax;x+=h)
{
    y=a*x*x*x+b*x+c;
 
    putpixel(x+X0,-y+Y0, 3);
 
}
}
else
if(l==2)
{
    printf ("Введите значение a=");
    scanf("%f",&a);
    printf ("Введите значение b=");
    scanf("%f",&b);
    printf("Введите значение c=");
    scanf("%f", &c);
    initwindow(800,800);
    line (X0,0,X0,799);
    line (0,Y0,799,Y0);
 
    for (x=xmin;x<=xmax;x+=h)
    {
        y=a*cos(x+b)+c;
 
        putpixel(x+X0,-y+Y0, 4);
 
    } }
else
    if(l==3)
    {
        printf ("Введите значение a=");
        scanf("%f",&a);
        printf ("Введите значение b=");
        scanf("%f",&b);
        printf("Введите значение c=");
        scanf("%f", &c);
        initwindow(800,800);
        line (X0,0,X0,799);
        line (0,Y0,799,Y0);
 
        for (x=xmin;x<=xmax;x+=h)
        {
            y=a*log(fabs(x+b))+c;
 
            putpixel(x+X0,-y+Y0, 5);
 
        } }
    else
    {printf("Необходимо выбрать график 1, график 2 или график 3");}
    getch();
    return 1;
}
1
Модератор
Эксперт С++
13507 / 10757 / 6412
Регистрация: 18.12.2011
Сообщений: 28,713
18.05.2014, 09:12 11
Предлагаю радикальное решение.
В 1 программе данные для графиков пишите в файл,
а во второй - читайте их из этого файла.

Или запишите их в массивы, которые передайте в функцию построения графиков.
1
2 / 2 / 2
Регистрация: 14.12.2013
Сообщений: 120
18.05.2014, 09:16  [ТС] 12
Добавьте второй код в конец первого
Но мне нужно, чтобы произошло обращение первой программы (с курсовой) ко второй (с графиками), а тут получается, что просто к первой программе добавили код со второй.
То есть нужно сделать так, чтобы первая программа выполнилась и обратилась ко второму файлу, в котором находится программа с графиками.
Странные вопросы задаёте. Первый день с С++ знакомы?
Вопрос действительно был глупым.
0
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
18.05.2014, 09:18 13
Цитата Сообщение от zss Посмотреть сообщение
В 1 программе данные для графиков пишите в файл,
а во второй - читайте их из этого файла.
Там есть чтение из файла.
Цитата Сообщение от zaqwerty Посмотреть сообщение
Но мне нужно, чтобы произошло обращение первой программы (с курсовой) ко второй (с графиками),
Зачем нужно?
1
2 / 2 / 2
Регистрация: 14.12.2013
Сообщений: 120
18.05.2014, 09:24  [ТС] 14
Предлагаю радикальное решение.
В 1 программе данные для графиков пишите в файл,
а во второй - читайте их из этого файла.
zss, так не пойдет, мне нужно, чтобы первая программа после своего выполнения обращалась ко второй программе. То есть, например, после выполнения 1-й программы выводилось сообщение "Хотите построить графики? 1) Да 2) Нет" и при выборе первого варианта "Да" выполнялась вторая программа с графиками.

Добавлено через 2 минуты
Зачем нужно?
alsav22, таково задание по курсовой. А точнее, рекомендация от преподавателя.
0
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
18.05.2014, 09:32 15
main.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
137
138
139
140
#include <stdio.h>
#include <iostream>
#include <conio.h>
#include <math.h>
#include <locale>
 
void painter();
 
#define IN "C:\\Users\\st1a3sea\\Desktop\\labs\\input.txt"
 
float a,b,c,n1,n2;
float f1(float x)
{return a*pow(x,3)+b*x+c;}
float f2(float x)
{return a*sin(x+b)+c;}
float f3(float x)
{return a*log(fabs(x+b))+c;}
 
int main()
{
setlocale(LC_ALL,"Russian");
using namespace std;
float s1p=0,s2p=0,s3p=0,s1t=0,s2t=0,s3t=0,h,as1,as2,as3,os1,os2,os3;
int n,i,ans;
float p[500];
printf ("Каким образом хотите задать переменные?\n 1) С клавиатуры\n 2) Из файла\n");//????? ?????? ?? ?????
scanf("%d", &ans);// ?????? ?????? ? ?????????? ans
switch(ans)
{
case 1:
    {
        printf("Введите a=");// ????? ?????? ?? ?????
scanf("%f", &a);// ?????? ?????? ? ?????????? a
        printf("Введите b=");// ????? ?????? ?? ?????
        scanf("%f", &b);// ?????? ?????? ? ?????????? b
        printf("Введите c=");// ????? ?????? ?? ?????
        scanf("%f", &c);// ?????? ?????? ? ?????????? c
        printf("Введите число интервалов разбиения n=");// ????? ?????? ?? ?????
       scanf("%d", &n);// ?????? ?????? ? ?????????? n
       if((n<0)||(n>500))
    {
                printf("Неверное число интервалов разбиения\n");// ????? ?????? ?? ?????
                //system("pause");
                return 1;
           }
                printf("Введите нижний предел интегрирования n1=");// ????? ?????? ?? ?????
 scanf("%f", &n1);// ?????? ?????? ? ?????????? n1
 printf("Введите верхний предел интегрирования n2=");// ????? ?????? ?? ?????
scanf("%f", &n2);// ?????? ?????? ? ?????????? n2
if((n1<-1000)||(n1>1000)||(n2<-1000)||(n2>1000))
 {
    printf("Неверные пределы интегрирования. Нужно ввести пределы интегрирования в заданном диапазоне \n");// ????? ?????? ?? ?????
        //system("pause");
        return 1;
}
break;
}
case 2:
{
        freopen(IN,"r",stdin);
         scanf("%f%f%f%d%f%f", &a,&b,&c,&n,&n1,&n2);
         if((n>500)||(n<0))
      {printf("Неверное число интервалов разбиения\n");// ????? ?????? ?? ?????
                 //system("pause");
        return 1;
                 }
         if((n1<-1000)||(n1>1000)||(n2<-1000)||(n2>1000))
         {
          printf("Неверные пределы интегрирования. Нужно ввести пределы интегрирования в заданом диапазоне\n");// ????? ?????? ?? ?????
                  //system("pause");
        return 1;
          }
                 break;
}
default:
        {
                printf("Необходимо выбрать действие 1 или действие 2");
                //system("pause");
                return 1;
}
}
printf("a=%f\n",a);
printf("b=%f\n",b);
printf("c=%f\n",c);
printf("n=%d\n",n);
printf("n1=%f\n",n1);
printf("n2=%f\n",n2);
    h=(n2-n1)/n;
    for (i=1; i<=n;i++)
    {
        p[i]=n1+i*h;
    }
    for (float x=p[1]; x<=p[n]; x+=h)
    {s1p+=f1(x);
      s2p+=f2(x);
      s3p+=f3(x);
    }
    s1p*=h;
    s2p*=h;
    s3p*=h;
    printf("s1p=%f\n",s1p);
    printf("s2p=%f\n",s2p);
    printf("s3p=%f\n",s3p);
    for(float x=n1; x<=n2; x+=(n2-n1))
    {if(x==n1)
        {
        s1t-=((a*pow(x,4))/4+((b*pow(x,2))/2)+c*x);
        s2t-=(-a*cos(x+b)+c*x);
        s3t-=(a*log(x+b)+c*x);
}
        if(x==n2)
        {
            s1t+=((a*pow(x,4))/4+((b*pow(x,2))/2)+c*x);
            s2t+=(-a*cos(x+b)+c*x);
            s3t+=(a*log(x+b)+c*x);
        }
    }
        printf("s1t=%f\n",s1t);
        printf("s2t=%f\n",s2t);
        printf("s3t=%f\n",s3t);
        as1=fabs(s1t-s1p);
        as2=fabs(s2t-s2p);
        as3=fabs(s3t-s3p);
        os1=as1/fabs(s1p);
        os2=as2/fabs(s2p);
        os3=as3/fabs(s3p);
        printf("as1=%f\n",as1);
        printf("as2=%f\n",as2);
        printf("as3=%f\n",as3);
        printf("os1=%f\n",os1);
        printf("os2=%f\n",os2);
        printf("os3=%f\n",os3);
 
        printf("Хотите построить графики? 1) Да 2) Нет");
        scanf("%d", &ans);
        if (ans == 1)
            painter();
        getch();
        return 0;
}
painter.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
#include <stdio.h>
#include <conio.h>
#include <math.h>
#include <locale>
#include <graphics.h>
 
void painter()
{
 
const int X0=400;
const int Y0=400;
const float xmin=-10;
const float xmax=10;
 
float a,b,c,x,y,h=0.001;
 
int l;
printf("Выберите график\n 1) y=a*x*x*x+b*x+c\n 2) y=a*cos(x+b)+c\n 3) y=a*log(fabs(x+b))+c;\n");
scanf("%d",&l);
if(l==1)
{
printf ("Введите значение a=");
scanf("%f",&a);
printf ("Введите значение b=");
scanf("%f",&b);
printf("Введите значение c=");
scanf("%f", &c);
initwindow(800,800);
line (X0,0,X0,799);
line (0,Y0,799,Y0);
 
for (x=xmin;x<=xmax;x+=h)
{
    y=a*x*x*x+b*x+c;
 
    putpixel(x+X0,-y+Y0, 3);
 
}
}
else
if(l==2)
{
    printf ("Введите значение a=");
    scanf("%f",&a);
    printf ("Введите значение b=");
    scanf("%f",&b);
    printf("Введите значение c=");
    scanf("%f", &c);
    initwindow(800,800);
    line (X0,0,X0,799);
    line (0,Y0,799,Y0);
 
    for (x=xmin;x<=xmax;x+=h)
    {
        y=a*cos(x+b)+c;
 
        putpixel(x+X0,-y+Y0, 4);
 
    } }
else
    if(l==3)
    {
        printf ("Введите значение a=");
        scanf("%f",&a);
        printf ("Введите значение b=");
        scanf("%f",&b);
        printf("Введите значение c=");
        scanf("%f", &c);
        initwindow(800,800);
        line (X0,0,X0,799);
        line (0,Y0,799,Y0);
 
        for (x=xmin;x<=xmax;x+=h)
        {
            y=a*log(fabs(x+b))+c;
 
            putpixel(x+X0,-y+Y0, 5);
 
        } }
    else
    {printf("Необходимо выбрать график 1, график 2 или график 3");}
    getch();
    
}
2
2 / 2 / 2
Регистрация: 14.12.2013
Сообщений: 120
18.05.2014, 09:45  [ТС] 16
alsav22, в первой программе выдает следующую ошибку: "undefined reference to 'painter()'"
Во второй программе, при замене int main() на void painter() начинает выдавать ошибку в putpixel
0
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
18.05.2014, 09:48 17
Цитата Сообщение от zaqwerty Посмотреть сообщение
Во второй программе, при замене int main() на void painter()
Где я написал, что нужно что-то заменять? В проекте (и в папке проекта) должно быть два, выложенных мной, файла (с выложенным кодом): main.cpp и painter.cpp. И всё.
1
2 / 2 / 2
Регистрация: 14.12.2013
Сообщений: 120
18.05.2014, 09:52  [ТС] 18
alsav22, я имею ввиду, что второй код с графиками не работает, а именно выдает ошибку в putpixel. Но, если заменить void painter() на int main(), то такой ошибки не наблюдается.
0
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
18.05.2014, 09:58 19
Цитата Сообщение от zaqwerty Посмотреть сообщение
я имею ввиду, что второй код с графиками не работает,
Это у вас не работает. Мой код, у меня работает. Какой код пробуетет? Из 15 поста, или свой переделываете?
Миниатюры
Обращение одной программы к другой  
1
2 / 2 / 2
Регистрация: 14.12.2013
Сообщений: 120
18.05.2014, 10:05  [ТС] 20
alsav22, странно. Пробую ваш код из 15 поста. Ничего не переделывал. Программирую на Dev-C++ 4.9.9.2.
У Вас Visual стоит?
0
18.05.2014, 10:05
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.05.2014, 10:05
Помогаю со студенческими работами здесь

Обращение к одной кнопке из другой через MVVM
Если такая вот реализация в ViewModel private void MetodOne(object parameter) { IsOne =...

Обращение к переменной одной формы, обрабатывая событие на другой форме...
Я сделал в гриде столбец селект. При нажатии на кнопку, я сохраняю индекс выбранного ряда в...

Как отправить в RAM переменную из одной программы, а потом достать её из другой программы?
Как отправить в RAM переменную из одной программы, а потом достать её из другой программы?

Запуск одной программы из другой
Здравствуйте! Пытаюсь запустить одну программу из другой, но ничего не происходит (должна...


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

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