Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- double n;
- double pc=-15;
- double kc = 15;
- double potega(double liczba, int wykladnik){
- double wynik=liczba;
- int i;
- for(i=1;i<wykladnik;i++){
- wynik=wynik*liczba;
- }
- return wynik;
- }
- double calkazzakresu(double p, double k){
- double suma =0;
- while(p<=k){
- double tmp2 = (8*potega(p,5)-2*potega(p,4)+15*potega(p,2)-24*p+18);//wartosc jednego boku trapezu
- double tmp =(8*potega(p+n,5)-2*potega(p+n,4)+15*potega(p+n,2)-24*(p+n)+18); //wartosc drugiego boku trapezu
- suma=suma+n*((tmp+tmp2)/2);
- p=p+n;
- }
- return suma;
- }
- int main(int argc, char **argv){
- int potok[2];
- double sumac=0;
- int iloscPrzedzialow;
- double dlugoscprzedzialu;
- iloscPrzedzialow = atoi(argv[1]);
- n = atof(argv[2]);
- dlugoscprzedzialu = (kc-pc)/iloscPrzedzialow;
- double tmpPc=pc;
- int i;
- pipe(potok);
- for(i=0; i<iloscPrzedzialow; i++){
- double tmp4 = tmpPc;
- write(potok[1],&tmp4,sizeof(tmp4));
- tmpPc=tmpPc+dlugoscprzedzialu;
- }
- for(i=0;i<iloscPrzedzialow;i++){
- if (fork() ==0){
- double tmp2;//wartosc zapisana do potoku
- double tmp3;//wartosc odczytana z potoku
- read(potok[0], &tmp3, sizeof(tmp3));
- tmp2 = calkazzakresu(tmp3,tmp3+dlugoscprzedzialu);
- write(potok[1],&tmp2,sizeof(tmp2));
- printf("potomek %d: ",i);
- printf("%f\n",tmp2);
- exit(0);
- }
- }
- while (wait(0) > 0){};
- for (i=0; i<iloscPrzedzialow;i++){
- double tmp3; //wartosc odczytana z potoku
- read(potok[0], &tmp3, sizeof(tmp3));
- sumac=sumac+tmp3;
- }
- printf("suma: %f\n",sumac);
- printf("n: %f\n",n);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement