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("\n\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("\n\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("\n\tФормула трапецій:\t\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("\n\tФормула Сімпсона:\t\t %g",fabs(h)*(s+s1)/3)
}
//повідомлення про помилку
void Pomulka(void)
{
Fon();
clrscr();
Bykvu();
printf("\a\a\a\n\n\n\n\t\t\t╔════════════════════════╗ \n");
printf("\t\t\t║\t\t\t\t ║\n");
printf("\t\t\t║\t\t\t\t ║\n");
printf("\t\t\t║");
printf(" ");
cprintf("Ви допустили помилку !!!");
printf(" ║\n");
printf("\t\t\t║\t\t\t\t ║\n");
printf("\t\t\t║ ");
cprintf(" Натиснули невірну клавішу !!!");
printf(" ║\n");
printf("\t\t\t║\t\t\t\t ║\n");
printf("\t\t\t║\t\t");
cprintf(" ENTER ");
printf(" ║\n");
printf("\t\t\t║\t\t\t\t ║\n");
printf("\t\t\t╚════════════════════════════════╝\n");
getch();
return;
}
//меню закінчення
void Zakin(void)
{
Fon();
clrscr();
Bykvu();
printf("\n\n\n\n\t\t\t╔═══════════════════════════╗ \n");
printf("\t\t\t║\t\t\t\t ║\n");
printf("\t\t\t║");
printf(" ");
cprintf(" Хочите закінчити роботу? ");
printf(" ");
printf("║\n");
printf("\t\t\t║\t\t\t\t ║\n");
printf("\t\t\t║ ");
cprintf("*ТАК*");
printf(" ");
printf(" --------> ");
cprintf("натисніть");
printf(" ");
cprintf("Y");
printf(" ║");
printf("\n\t\t\t║\t\t\t\t ║\n");
printf("\t\t\t║ ");
cprintf("*НІ*");
printf(" ");
printf(" ---------> ");
cprintf("натисніть");
printf(" ");
cprintf("N");
printf(" ║");
printf("\n\t\t\t║\t\t\t\t ║\n");
printf("\t\t\t╚════════════════════════════════╝\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("\t\ta=");
scanf("%d",&aa);
printf("\t\tb=");
scanf("%d",&bb);
if(vubir1==51)
if((aa<0)||(bb<0)){
printf("\t\tМежі мають бути додатні.Введіть нові.");
getch();
goto l4;
}
Rozb();
printf("\t\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;
}
}