SHARE
TWEET

zad1

a guest Dec 6th, 2019 83 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <stdio.h>
  2. #include <unistd.h>
  3. #include <string.h>
  4. #include <stdlib.h>
  5. #include <math.h>
  6. #include <sys/wait.h>
  7.  
  8. double silnia(double x)
  9. {
  10.     if(x==0)
  11.         return 1;
  12.     else if(x==1)
  13.         return 1;
  14.     else
  15.         return x*silnia(x-1);
  16. }
  17.  
  18. int main(){
  19.    
  20.     //char *myfifo = "Katarzyna1_2";
  21.     //char *mkfifo = "Katarzyna2_3";
  22.     //int mkfifo(myfifo, 0666);
  23.    
  24.     int fd[2];
  25.     char arr[100], wynik[100];
  26.    
  27.     pipe(fd);
  28.    
  29.     if(fork() > 0){
  30.         double X;
  31.         double Eps;
  32.        
  33.         close(fd[0]);
  34.        
  35.         printf("X = ");
  36.         scanf("%lf", &X);
  37.         sprintf(arr, "%lf", X);
  38.         write(fd[1], arr, 101);
  39.        
  40.         printf("Eps = ");
  41.         scanf("%lf", &Eps);
  42.         sprintf(arr, "%lf", Eps);
  43.         write(fd[1], arr, 101);
  44.        
  45.         close(fd[1]);
  46.         sleep(1);
  47.     }
  48.     else {
  49.         close(fd[1]);
  50.         double X, Eps;
  51.         read(fd[0], wynik, 101);
  52.         X=strtod(wynik, NULL);
  53.        
  54.         read(fd[0], wynik, 101);
  55.         Eps = strtod(wynik,NULL);
  56.        
  57.         close(fd[0]);
  58.        
  59.         int fd1[2];
  60.         pipe(fd1);
  61.        
  62.         if(fork() > 0){
  63.             double i=0;
  64.             double fragment;
  65.            
  66.             do{
  67.                 fragment=pow(X,i)/silnia(i);
  68.                 i++;
  69.                 sprintf(arr, "%lf", fragment);
  70.                 write(fd1[1], arr, 101);
  71.                 printf("%lf\n ", fragment);
  72.             }
  73.             while(fragment >= Eps);
  74.            
  75.             return 0;
  76.         }
  77.         else{
  78.             double sum=0, tmp;
  79.             close(fd1[1]);
  80.            
  81.             while(read(fd1[0], wynik, 101)>0){
  82.                 tmp=strtod(wynik, NULL);
  83.                 sum += tmp;
  84.             }
  85.             printf("Suma: %f\n", sum);
  86.             printf("Wynik = %f\n", exp(X));
  87.             return 0;
  88.         }
  89.     }
  90.     return 0;
  91. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top