Advertisement
Guest User

Untitled

a guest
Mar 24th, 2017
50
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.62 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <math.h>
  3.  
  4. double f(double);
  5. double integral(double (double), double, double, int);
  6.  
  7.  
  8. double f(double t){
  9.     return t;
  10. }
  11.  
  12. int main(void){
  13.     double r, a, b, c;
  14.     int n;
  15.     printf("Vvedite, pojaluista, a i b: ");
  16.     if(scanf("%lf%lf", &a, &b)!=2)
  17.     {
  18.             printf("Cant't read");
  19.             return -1;
  20.     }
  21.     printf("Esche vvedite, pojaluista, n: ");
  22.     if(scanf("%d", &n)!=1)
  23.     {
  24.             printf("Cant't read");
  25.             return -1;
  26.     }
  27.     if(n<0) return 0;
  28.     while(n>0){
  29.         r=integral(f,a,b,n);
  30. //printf("%f %f\n",r,sgn);
  31.         printf("Integral = %f\n",r);
  32.         printf("Vvedite, pojaluista, a i b: ");
  33.         if(scanf("%lf%lf", &a, &b)!=2)
  34.         {
  35.                 printf("Cant't read");
  36.                 return -1;
  37.         }
  38.         printf("Esche vvedite, pojaluista, n: ");
  39.         if(scanf("%d", &n)!=1)
  40.         {
  41.                 printf("Cant't read");
  42.                 return -1;
  43.         }
  44.         if(n<0) return 0;
  45.     }
  46.     return 0;
  47. }
  48.  
  49. double integral(double (*f)(double), double a, double b, int n){
  50.     int i;
  51.     double h, s=0, s1, s2;
  52.     double A, B, fi=f(a), fi1, xi=a, xi1;
  53.     h=(b-a)/(double)n;
  54. //printf("%f %f %f",fi,xi,h);
  55.     for(i=0; i<n-1; i++){
  56.         xi1=a+(i+1)*h;
  57.         fi1=f(xi1);
  58.         A=(fi1-fi)/(xi1-xi);
  59.         B=fi-(fi1-fi)*xi/(xi1-xi);
  60.         s1=2*(pow(xi1,1.5)-pow(xi,1.5))/3;
  61.         s2=2*(sign(xi1)*sqrt(fabs(xi1))-sign(xi)*sqrt(fabs(xi)));
  62.         s+=(A*s1+B*s2);
  63.         xi=xi1;
  64.         fi=fi1;
  65.     }
  66.     return s;
  67. }
  68.  
  69. int sign(double x){
  70.     if(x<0) return -1;
  71.     return 1;
  72. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement