Смекни!
smekni.com

Обчислення визначених інтегралів за формулами прямокутників, трапецій та Сімпсона (стр. 4 из 4)

printf(" ");

cprintf("Вихід");

printf(" -----------------> ");

cprintf("натисніть");

printf(" ");

cprintf("V");

printf(" ║");

printf("\n\t\t║ ║");

printf("\n\t\t╚═════════════════════════════════╝");

return;

}

//Меню вибору функції

void Vubir_Fun(void)

{

Fon();

clrscr();

Bykvu(); printf("\a\n\n\n\n\t\t╔════════════════════════════════╗");

printf("\n\t\t║ ║");

printf("\n\t\t║ ");

cprintf("Виберіть функцію:");

printf(" ║");

printf("\n\t\t║ ║");

printf("\n\t\t║ ");

cprintf("*");

printf(" ");

cprintf("exp(x)");

printf(" --------------> ");

cprintf("натисніть");

printf(" ");

cprintf("1");

printf(" ");

printf("║");

printf("\n\t\t║ ║");

printf("\n\t\t║ ");

cprintf("*");

printf(" ");

cprintf("sin(2*x)+x");

printf(" ----------> ");

cprintf("натисніть");

printf(" ");

cprintf("2");

printf(" ");

printf("║");

printf("\n\t\t║ ║");

printf("\n\t\t║ ");

cprintf("*");

printf(" ");

cprintf("log(x*x)");

printf(" ------------> ");

cprintf("натисніть");

printf(" ");

cprintf("3");

printf(" ");

printf("║");

printf("\n\t\t║ ║");

printf("\n\t\t║ ");

cprintf("*");

printf(" ");

cprintf("повернення в меню");

printf(" ---> ");

cprintf("натисніть");

printf(" ");

cprintf("4");

printf(" ");

printf("║");

printf("\n\t\t║ ║");

printf("\n\t\t╚═════════════════════════════════╝");

return;

}

//ввід меж інтегрування

void Megi(void)

{

Fon();

clrscr();

Bykvu();

printf("\n\t\t══════════════════════════\n");

printf("\t\t");

cprintf("Введіть межі інтегрування:");

printf("\n\t\t══════════════════════════\n");

return;

}

//ввід кроків

void Rozb(void)

{

printf("\n\n\t\t═════════════════════════\n");

printf("\t\t");

cprintf("Введіть кількість кроків:");

printf("\n\t\t═════════════════════════\n");

return;

}

//функція exp(w)

double fun1(double w)

{

return exp(w);

}

double fun2(double w)// функція sin(2*w)+w

{

return sin(2*w)+w;

}

// функція log(w*w)

double fun3(double w)

{

return log(w*w);

}

//обчислення за формулою „лівих” прямокутників

double Liv_pram(double (*fun)(double),double x,double h,int n)

{

double s;

int i;

s=fun(x);

for(i=0;i<n-1;i++){

x+=fabs(h);

s+=fun(x);

}

return printf("&bsol;n&bsol;tФормула лівих прямокутників: %g",(fabs(h)*s));

}

//обчислення за формулою „правих” прямокутників

double Prav_pram(double (*fun)(double),double x,double h,int n)

{

int i;

double s=0;

for(i=0;i<n;i++){

x+=fabs(h);

s+=fun(x);

}

return printf("&bsol;n&bsol;tФормула правих прямокутників: %g",(fabs(h)*s));

}

//обчислення за формулою трапецій

double Trap(double (*fun)(double),double x,double h,int n)

{

int i;

double s=0,y1;

y1=fun(x);

for(i=0;i<n-1;i++){

x+=fabs(h);

s+=fun(x);

}

x+=fabs(h);

s+=(fun(x)+y1)/2;

return printf("&bsol;n&bsol;tФормула трапецій:&bsol;t&bsol;t %g",(fabs(h)*s));

}

//обчислення за формулою Сімпсона

double Simp(double (*fun)(double),double x,double h,int a,int b,int n)

{

double s=0,s1;

int i,c=1;

for(i=0;i<n-1;i++){

x+=fabs(h);

s+=(3+c)*fun(x);

c=-c;

}

s1=fun(a)+fun(b);

return printf("&bsol;n&bsol;tФормула Сімпсона:&bsol;t&bsol;t %g",fabs(h)*(s+s1)/3)

}

//повідомлення про помилку

void Pomulka(void)

{

Fon();

clrscr();

Bykvu();

printf("&bsol;a&bsol;a&bsol;a&bsol;n&bsol;n&bsol;n&bsol;n&bsol;t&bsol;t&bsol;t╔════════════════════════╗ &bsol;n");

printf("&bsol;t&bsol;t&bsol;t║&bsol;t&bsol;t&bsol;t&bsol;t ║&bsol;n");

printf("&bsol;t&bsol;t&bsol;t║&bsol;t&bsol;t&bsol;t&bsol;t ║&bsol;n");

printf("&bsol;t&bsol;t&bsol;t║");

printf(" ");

cprintf("Ви допустили помилку !!!");

printf(" ║&bsol;n");

printf("&bsol;t&bsol;t&bsol;t║&bsol;t&bsol;t&bsol;t&bsol;t ║&bsol;n");

printf("&bsol;t&bsol;t&bsol;t║ ");

cprintf(" Натиснули невірну клавішу !!!");

printf(" ║&bsol;n");

printf("&bsol;t&bsol;t&bsol;t║&bsol;t&bsol;t&bsol;t&bsol;t ║&bsol;n");

printf("&bsol;t&bsol;t&bsol;t║&bsol;t&bsol;t");

cprintf(" ENTER ");

printf(" ║&bsol;n");

printf("&bsol;t&bsol;t&bsol;t║&bsol;t&bsol;t&bsol;t&bsol;t ║&bsol;n");

printf("&bsol;t&bsol;t&bsol;t╚════════════════════════════════╝&bsol;n");

getch();

return;

}

//меню закінчення

void Zakin(void)

{

Fon();

clrscr();

Bykvu();

printf("&bsol;n&bsol;n&bsol;n&bsol;n&bsol;t&bsol;t&bsol;t╔═══════════════════════════╗ &bsol;n");

printf("&bsol;t&bsol;t&bsol;t║&bsol;t&bsol;t&bsol;t&bsol;t ║&bsol;n");

printf("&bsol;t&bsol;t&bsol;t║");

printf(" ");

cprintf(" Хочите закінчити роботу? ");

printf(" ");

printf("║&bsol;n");

printf("&bsol;t&bsol;t&bsol;t║&bsol;t&bsol;t&bsol;t&bsol;t ║&bsol;n");

printf("&bsol;t&bsol;t&bsol;t║ ");

cprintf("*ТАК*");

printf(" ");

printf(" --------> ");

cprintf("натисніть");

printf(" ");

cprintf("Y");

printf(" ║");

printf("&bsol;n&bsol;t&bsol;t&bsol;t║&bsol;t&bsol;t&bsol;t&bsol;t ║&bsol;n");

printf("&bsol;t&bsol;t&bsol;t║ ");

cprintf("*НІ*");

printf(" ");

printf(" ---------> ");

cprintf("натисніть");

printf(" ");

cprintf("N");

printf(" ║");

printf("&bsol;n&bsol;t&bsol;t&bsol;t║&bsol;t&bsol;t&bsol;t&bsol;t ║&bsol;n");

printf("&bsol;t&bsol;t&bsol;t╚════════════════════════════════╝&bsol;n");

return;

}

//головна функція

int main(void)

{

int aa,bb,nn;

int vubir1;

double hh,xx;

clrscr();

Poc();

l2: Menu();

switch (getch())

{

case 'F': case 'f': {

{

l1: Vubir_Fun();

vubir1=getch();

fflush(stdin);

if (vubir1>52) {

Pomulka();

goto l1;

}

if(vubir1==52) goto l2;

l4: Megi();

printf("&bsol;t&bsol;ta=");

scanf("%d",&aa);

printf("&bsol;t&bsol;tb=");

scanf("%d",&bb);

if(vubir1==51)

if((aa<0)||(bb<0)){

printf("&bsol;t&bsol;tМежі мають бути додатні.Введіть нові.");

getch();

goto l4;

}

Rozb();

printf("&bsol;t&bsol;tn=");

scanf("%d",&nn);

hh=(double(aa-bb))/double(nn);

if(aa>bb) xx=bb;else xx=aa;

switch (vubir1)

{

case 49: {

Liv_pram(fun1,xx,hh,nn);

Prav_pram(fun1,xx,hh,nn);

Trap(fun1,xx,hh,nn);

Simp(fun1,xx,hh,aa,bb,nn);

getch();

break;

}

case 50: {

Liv_pram(fun2,xx,hh,nn);

Prav_pram(fun2,xx,hh,nn);

Trap(fun2,xx,hh,nn);

Simp(fun2,xx,hh,aa,bb,nn);

getch();

break;

}

case 51: {

Liv_pram(fun3,xx,hh,nn);

Prav_pram(fun3,xx,hh,nn);

Trap(fun3,xx,hh,nn);

Simp(fun3,xx,hh,aa,bb,nn);

getch();

break;

}

}

}

l3: Zakin();

switch (getch())

{

case 'N': case 'n': goto l2;

case 'Y': case 'y':return 0;

default:

Pomulka();

goto l3;

}

}

case 'V': case 'v': return 0;

default:

Pomulka();

goto l2;

}

}