Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Robert Sokolowski
- #include <stdio.h>
- #include <stdlib.h>
- #include <math.h>
- double n;
- double fun(double x)
- {
- return 8.0*pow(x,5) - 2.0*pow(x,4) + 15*x*x - 24.0*x + 18.0;
- }
- double calka(double from, double to)
- {
- double ile_f = (to - from) / n;
- //zaokraglanie w gore i rzutowanie na int
- int ile = ile_f > 0 ? (int)(ile_f + 0.9) : -(int)(ile_f - 0.9);
- int i;
- double podsuma = 0;
- double x = from, y = from + n;
- printf("Od X:%f\t Do X:%f\t ile:%d\t ile_f:%f\n", from, to, ile, ile_f);
- for (i=0; i<ile; i++)
- {
- podsuma += (fun(x) + fun(y)) * n /2.0;
- x = y;
- y += n;
- }
- return podsuma;
- }
- int main(int argc, char* argv[])
- {
- if(argc < 2)
- {
- printf("za malo parametrow");
- return 1;
- }
- n = atof(argv[1]);
- int k = atoi(argv[2]);
- double a, b, suma;
- printf("\n%s: %f, %s: %d\n\n", "krok(n)", n, "l.proc.potom(k)", k);
- int i, potok[2];
- pipe(potok);
- double skok = 30.0/k;
- double from = -15.0;
- for(i=0;i<k;i++)
- {
- if(fork() == 0)
- {
- a = calka(from, from+skok);
- write(potok[1], &a, sizeof(a));
- exit(0);
- }
- from += skok;
- }
- suma = 0.0;
- for(i=0;i<k;i++)
- {
- read(potok[0], &b, sizeof(b));
- suma += b;
- }
- printf("\nsuma = %f\n", suma);
- exit(0);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement