Курсовая работа: Обчислення визначених інтегралів за формулами прямокутників, трапецій та Сімпсона
{
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;
}
}
|