Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <math.h>
- double f(double);
- double integral(double (double), double, double, int);
- double f(double t){
- return t;
- }
- int main(void){
- double r, a, b, c;
- int n;
- printf("Vvedite, pojaluista, a i b: ");
- if(scanf("%lf%lf", &a, &b)!=2)
- {
- printf("Cant't read");
- return -1;
- }
- printf("Esche vvedite, pojaluista, n: ");
- if(scanf("%d", &n)!=1)
- {
- printf("Cant't read");
- return -1;
- }
- if(n<0) return 0;
- while(n>0){
- r=integral(f,a,b,n);
- //printf("%f %f\n",r,sgn);
- printf("Integral = %f\n",r);
- printf("Vvedite, pojaluista, a i b: ");
- if(scanf("%lf%lf", &a, &b)!=2)
- {
- printf("Cant't read");
- return -1;
- }
- printf("Esche vvedite, pojaluista, n: ");
- if(scanf("%d", &n)!=1)
- {
- printf("Cant't read");
- return -1;
- }
- if(n<0) return 0;
- }
- return 0;
- }
- double integral(double (*f)(double), double a, double b, int n){
- int i;
- double h, s=0, s1, s2;
- double A, B, fi=f(a), fi1, xi=a, xi1;
- h=(b-a)/(double)n;
- //printf("%f %f %f",fi,xi,h);
- for(i=0; i<n-1; i++){
- xi1=a+(i+1)*h;
- fi1=f(xi1);
- A=(fi1-fi)/(xi1-xi);
- B=fi-(fi1-fi)*xi/(xi1-xi);
- s1=2*(pow(xi1,1.5)-pow(xi,1.5))/3;
- s2=2*(sign(xi1)*sqrt(fabs(xi1))-sign(xi)*sqrt(fabs(xi)));
- s+=(A*s1+B*s2);
- xi=xi1;
- fi=fi1;
- }
- return s;
- }
- int sign(double x){
- if(x<0) return -1;
- return 1;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement