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

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

Восстановить пароль Регистрация
 
 
zaqwerty
0 / 0 / 0
Регистрация: 14.12.2013
Сообщений: 108
17.05.2014, 08:55     Обращение одной программы к другой #1
Здравствуйте. Я написал программу, которая интегрирует функцию методом правых прямоугольников. И отдельно я написал программу, которая строит график этой функции. И теперь мне нужно чтобы первая программа, после интегрирования функции, обращалась ко второй программе и производилось построение графиков. Как это можно сделать? Пишу курсовую, очень нужно
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
17.05.2014, 09:18     Обращение одной программы к другой #2
Цитата Сообщение от zaqwerty Посмотреть сообщение
И отдельно я написал программу, которая строит график этой функции.
Что за программа? Оформите её в виде функции, вызывайте из первой.

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

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

Добавлено через 1 минуту
И на вопрос не ответили:
Цитата Сообщение от alsav22 Посмотреть сообщение
Что за программа?
Рисование графика функции чем реализовано (в С++ нет поддержки графики)?
zaqwerty
0 / 0 / 0
Регистрация: 14.12.2013
Сообщений: 108
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;
}
alsav22
5282 / 4801 / 442
Регистрация: 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);
        } 
    }
}
zaqwerty
0 / 0 / 0
Регистрация: 14.12.2013
Сообщений: 108
18.05.2014, 08:54  [ТС]     Обращение одной программы к другой #9
alsav22, в первой программе мне нужно, чтобы графики рисовались сразу после выполнения самой программы, а именно после подсчета и вывода абсолютной и относительной погрешностей (as и os).
И вот это не сравнение
То есть нужно так записать?
C++
1
if(x==n1)
alsav22
5282 / 4801 / 442
Регистрация: 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;
}
zss
Модератор
Эксперт С++
 Аватар для zss
5948 / 5553 / 1785
Регистрация: 18.12.2011
Сообщений: 14,188
Завершенные тесты: 1
18.05.2014, 09:12     Обращение одной программы к другой #11
Предлагаю радикальное решение.
В 1 программе данные для графиков пишите в файл,
а во второй - читайте их из этого файла.

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

Добавлено через 2 минуты
Зачем нужно?
alsav22, таково задание по курсовой. А точнее, рекомендация от преподавателя.
alsav22
5282 / 4801 / 442
Регистрация: 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();
    
}
zaqwerty
0 / 0 / 0
Регистрация: 14.12.2013
Сообщений: 108
18.05.2014, 09:45  [ТС]     Обращение одной программы к другой #16
alsav22, в первой программе выдает следующую ошибку: "undefined reference to 'painter()'"
Во второй программе, при замене int main() на void painter() начинает выдавать ошибку в putpixel
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
18.05.2014, 09:48     Обращение одной программы к другой #17
Цитата Сообщение от zaqwerty Посмотреть сообщение
Во второй программе, при замене int main() на void painter()
Где я написал, что нужно что-то заменять? В проекте (и в папке проекта) должно быть два, выложенных мной, файла (с выложенным кодом): main.cpp и painter.cpp. И всё.
zaqwerty
0 / 0 / 0
Регистрация: 14.12.2013
Сообщений: 108
18.05.2014, 09:52  [ТС]     Обращение одной программы к другой #18
alsav22, я имею ввиду, что второй код с графиками не работает, а именно выдает ошибку в putpixel. Но, если заменить void painter() на int main(), то такой ошибки не наблюдается.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
18.05.2014, 09:58     Обращение одной программы к другой #19
Цитата Сообщение от zaqwerty Посмотреть сообщение
я имею ввиду, что второй код с графиками не работает,
Это у вас не работает. Мой код, у меня работает. Какой код пробуетет? Из 15 поста, или свой переделываете?
Миниатюры
Обращение одной программы к другой  
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.05.2014, 10:05     Обращение одной программы к другой
Еще ссылки по теме:

C++ Составление одной строки из букв другой
C++ Переход от одной задачи к другой в одном окне
C++ Поиск одной переменной под другой

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

Или воспользуйтесь поиском по форуму:
zaqwerty
0 / 0 / 0
Регистрация: 14.12.2013
Сообщений: 108
18.05.2014, 10:05  [ТС]     Обращение одной программы к другой #20
alsav22, странно. Пробую ваш код из 15 поста. Ничего не переделывал. Программирую на Dev-C++ 4.9.9.2.
У Вас Visual стоит?
Yandex
Объявления
18.05.2014, 10:05     Обращение одной программы к другой
Ответ Создать тему
Опции темы

Текущее время: 15:22. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru