Advertisement
Guest User

sumazadataksada

a guest
Jun 6th, 2016
125
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. MODULE fib3;
  2.  
  3.   FROM SYSTEM IMPORT ADR;
  4.   FROM StrIO IMPORT WriteString, WriteLn;
  5.   FROM NumberIO IMPORT WriteInt, ReadInt;
  6.   FROM lib IMPORT fork, pipe, dup, read, write, close;
  7.   FROM errno IMPORT geterrno;
  8.  
  9. VAR
  10.   pfd: ARRAY[0..1] OF INTEGER;
  11.   pid: INTEGER;
  12.   i, j, m, n, f: INTEGER;
  13.   a, b, c, rez: INTEGER;
  14.   ulaz, e: ARRAY[0..10] OF INTEGER;
  15.   izlaz: INTEGER;
  16.   suma, brdece : INTEGER;
  17.   dubina, temp: INTEGER;
  18.  
  19. BEGIN
  20.  
  21.   WriteString("Unesite n: ");
  22.   ReadInt(n);
  23.  
  24.   m := n;
  25.   i := 0;
  26.   dubina := 1;
  27.   temp := 0;
  28.   WHILE (n > 1) AND (i < n) DO
  29.    
  30.     pipe(pfd);
  31.     pid := fork();
  32.    
  33.     IF pid # 0 THEN
  34.       ulaz[i] := dup(pfd[0]);
  35.       INC(i);
  36.       temp := i;
  37.     ELSE
  38.      
  39.       INC(dubina);
  40.      
  41.       FOR j := 0 TO i - 1 DO
  42.         close(ulaz[j]);
  43.       END;
  44.      
  45.       IF n < ((m - i) + 1) THEN
  46.         close(izlaz);
  47.       END;
  48.      
  49.       izlaz := dup(pfd[1]);
  50.       DEC(n, i + 1);
  51.       temp := i;
  52.       i := 0;
  53.      
  54.     END;
  55.    
  56.     close(pfd[0]);
  57.     close(pfd[1]);
  58.   END;
  59.  
  60.   IF n = 0 THEN
  61.     rez := 1;
  62.   ELSIF n = 1 THEN
  63.     rez := 1;
  64.   ELSE
  65.     FOR f := 0 TO temp - 1 DO
  66.       read(ulaz[f], ADR(e[f]), SIZE(e[f]));
  67.       close(ulaz[f]);
  68.     END;
  69.     FOR f := 0 TO temp - 1 DO
  70.       suma := suma + e[f];
  71.     END;
  72.     rez := rez + suma;
  73.   END;
  74.  
  75.   IF n = m THEN
  76.     WriteString("rez: "); WriteInt(rez,0); WriteLn;
  77.   ELSE
  78.     write(izlaz, ADR(rez), SIZE(rez));
  79.     close(izlaz);
  80.   END;
  81. END fib3.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement