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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
zaqwerty
1 / 1 / 1
Регистрация: 14.12.2013
Сообщений: 113
#1

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

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

Здравствуйте. Я написал программу, которая интегрирует функцию методом правых прямоугольников. И отдельно я написал программу, которая строит график этой функции. И теперь мне нужно чтобы первая программа, после интегрирования функции, обращалась ко второй программе и производилось построение графиков. Как это можно сделать? Пишу курсовую, очень нужно
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.05.2014, 08:55
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Обращение одной программы к другой (C++):

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

Как передавать данные от одной программы к другой? - C++
Искал темы похожие, не нашел, простите если не туда. Такая задача: написать 2 программы. Первая спрашивает пользователя название файла...

можно ли в с++ вызвать переменную из одной функции в другую т.е. мы переменну задали в одной функции а использовали в другой... и как это реализовать? - C++
можно ли в с++ вызвать переменную из одной функции в другую т.е. мы переменну задали в одной функции а использовали в другой... и как это...

Помещение и обращение массива объектов в другой массив - C++
Реализовать классы "автомобиль" и "пассажиры". Существуют автомобили в которых могут находиться пассажиры. каждый пассажир имеет свой...

Открытие файла другой программы из программы.Косяк. - C++
Итак, есть в программе такой кусок: system("E:\\KMPlayer\\KMPlayer.exe E:\\WINDOWS\\New_year.mp3"); Косяк в том, что пока песня не дойдёт...

Соответствие одной переменной другой - C++
Такая задача: Есть 4 числа: a = "0 1 0 2"; Есть частоты, каждая из которых передает отдельный символ: f = "800 900 1000 1100" ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
alsav22
5419 / 4815 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
17.05.2014, 09:18 #2
Цитата Сообщение от zaqwerty Посмотреть сообщение
И отдельно я написал программу, которая строит график этой функции.
Что за программа? Оформите её в виде функции, вызывайте из первой.

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

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

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

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

Добавлено через 2 минуты
Зачем нужно?
alsav22, таково задание по курсовой. А точнее, рекомендация от преподавателя.
0
alsav22
5419 / 4815 / 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();
    
}
2
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.05.2014, 09:32
Привет! Вот еще темы с ответами:

Наименьший путь от одной точки до другой - C++
Имеются N-точек, соединенных отрезками. Составить программу, находящую наименьший путь от одной точки до другой. Для реализации желательно...

Поиск маршрута от одной точки до другой - C++
Добрый день! подскажите возможно ли разработать скрипт для определения расстояния (маршрута) одной точки до другой? На основе данных яндекс...

Вычитание из одной строки символов другой - C++
Например есть две строки типа char, нужно из одной строки вычесть символы другой. char s1 = 'Hello world'; char s2 = ' world'; На...

Составление одной строки из букв другой - C++
Вывести сообщение &quot;МОЖНО&quot;, если из букв введённой строки X можно составить введенную строку Y, при условии, что каждую букву строки X можно...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
18.05.2014, 09:32
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru