Новичок
Профиль
Группа: Участник
Сообщений: 25
Регистрация: 20.12.2010
Репутация: нет Всего: нет
|
есть программа с графикой. Но когда программа начинает выполнять дочернию, она выполняет её прямо в программе. Помогите прописать очищение экрана перед выполнением дочерней и возвращение к главной программе после окончания дочерних. Главная Код | #include <conio.h> #include <stdlib.h> #include <graph.h> #include <process.h>
void DrawBlock() { _setcolor(3); _rectangle( _GFILLINTERIOR, 430 , 10, 630, 100); _rectangle( _GFILLINTERIOR, 430 , 130, 630, 220); _rectangle( _GFILLINTERIOR, 430 , 250, 630, 340); }
void DrawRacket(double x, double y) { _setcolor(5); _rectangle( _GFILLINTERIOR, x - 5, y - 45, x + 5, y + 45 ); }
void EraseRacket(double x, double y) { _setcolor(0); _rectangle( _GFILLINTERIOR, x - 5, y - 45, x + 5, y + 45 ); }
double racketx=400, rackety=55; int oldracketx=0, oldrackety=0; int redraw_Block=0;
int should_exit = 0, goal=0; int goals1=0, goals2=0; char s[20]=""; char ch; main() { short mode = _VRES16COLOR;
_setvideomode( mode ); DrawBlock(); while (!should_exit) { if (oldracketx!=(int)racketx || oldrackety!=(int)rackety) { DrawRacket(racketx, rackety); oldracketx = racketx; oldrackety = rackety; }
if (kbhit()) { ch = getch(); if (ch==27) should_exit = 1; if (ch==80) rackety+=120.0; if (ch==72) rackety-=120.0; }
if (rackety==55 && ch==13) execl("DDD");
if (rackety==175 && ch==13) execl("zad");
if (rackety==295 && ch==13) should_exit = 1;
_settextcolor( 7 ); sprintf(s,"Zadacha 1", goals1); _settextposition(4,63); _outtext(s);
_settextcolor( 7 ); sprintf(s, "Zadacha 2", goals1); _settextposition(12,63); _outtext(s);
_settextcolor( 7 ); sprintf(s, "Vixod", goals1); _settextposition(19,65); _outtext(s);
if (oldracketx!=(int)racketx || oldrackety!=(int)rackety) EraseRacket(oldracketx, oldrackety); if (redraw_Block) { DrawBlock(); redraw_Block = 0; } } exit( !_setvideomode( _DEFAULTMODE ) ); }
|
Дочерние: zad1: Код | #include <stdio.h> #include <math.h> #include <graph.h> #include <conio.h>
#define a 0.7 #define b 1.1 #define c 0.2
double ur (double x) {return a*sin(b*sqrt(fabs(x)))-c*(x*x*x);}
int main (){ double x, xn,xk,px,py,ymax,ymin,koy,kot,y; char tms[5]; int n=0;
puts("Write xn and xk:"); scanf("%lf%lf",&xn,&xk);
px = 640/(-xn+xk); _setvideomode(_VRES16COLOR); _clearscreen(_GCLEARSCREEN); ymax= -ur (xn); ymin=ymax;
for (x=xn; x<=xk;x+=0.00110)
{ y=-ur(x); if((-ur(x-0.001)*y)<=0.) {printf(" x[%d]=%0.2lf \n",n+1,x); n++; } if (ymax<y) ymax=y; if (ymin>y) ymin=y;}
if (n==0) puts("net resheniy");
_setwindow (1,xn,-ymin,xk,-ymax); _moveto_w (xn,0.); _lineto_w(xk,0.); _moveto_w (0.,-ymax); _lineto_w(0.,-ymin);
py = 480/fabs(-ymax+ymin); koy= (ymax-ymin)/2; _setvieworg(320,240); _setcolor (7); _settextposition (14,76); sprintf(tms,"%2.2f",xk); printf("%s\n",tms); _outtext(tms); _settextposition (14, 1); sprintf(tms,"%2.2f",xn); _outtext(tms); _settextcolor(7); _settextposition(1, 42); sprintf(tms,"%2.2f",-ymin); _outtext(tms); _settextposition(28, 42); sprintf(tms,"%2.2f",-ymax); _outtext(tms); kot = (xk-xn)/2;
x = xn; y = -ur(x); _moveto (((x-(xn+kot))*px), ((y-(ymin+koy))*py)); for (x =xn;x <= xk;x+=0.01) { y = -ur(x); _lineto((x-(xn+kot))*px, (y-(ymin+koy))*py);} getch(); return 0;}
|
DDD: Код | # include <stdio.h> # include <math.h> main () {double x,y,r; printf ("wwedi x i y \n");
scanf ("%lf%lf", &x, &y);
r=x+y;
printf ("otvet %0.1lf",r); return 0; }
|
Это сообщение отредактировал(а) Huey - 23.5.2011, 18:45
|