Guest User

Untitled

a guest
Apr 25th, 2018
58
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.69 KB | None | 0 0
  1. program Ejercicio1;
  2. var numero, suma: integer;
  3. var s1,s2,s3,s4: semaphore;
  4.  
  5. (*Código del Proceso 1: Lee datos numéricos de un array*)
  6. process P1;
  7. type vector = array[1..5] of integer;
  8. var VectorProceso1 : vector;
  9. var i: integer;
  10. (*Rellenar el vector de 25 elementos*)
  11. procedure rellenarVector(A:vector);
  12. var i:integer;
  13. begin
  14. for i:=1 to 5 do
  15. begin
  16. A[i]:=random(20);
  17. write(A[i]);
  18. end;
  19. end;
  20.  
  21. (*Cuerpo principal del Proceso*)
  22. begin
  23. rellenarVector(VectorProceso1);
  24. for i:=1 to 5 do
  25. begin
  26. wait(s1);
  27. numero:= VectorProceso1[i]; (*Leer número*)
  28. signal(s2);
  29. end;
  30. end;
  31.  
  32.  
  33.  
  34. (*Código del Proceso 2: Coge los datos y los suma de 5 en 5*)
  35. process P2;
  36. var i2,j2: integer;
  37.  
  38. (*Cuerpo principal del Proceso*)
  39. begin
  40. for i2:=1 to 5 do
  41. begin
  42. for j2:=1 to 1 do
  43. begin
  44. wait(s2);
  45. suma:= suma+numero;
  46. signal(s1);
  47. end;
  48. signal(s3);
  49. wait(s4);
  50. end;
  51. end;
  52.  
  53.  
  54.  
  55. (*Código del Proceso 3: Coge el resultado de la suma y lo escribe
  56. en un nuevo array*)
  57. process P3;
  58. type vectorpeque = array[1..5] of integer;
  59. var VectorProceso3: vectorpeque;
  60. var i:integer;
  61.  
  62. (*Cuerpo principal del Proceso*)
  63. begin
  64. for i:=1 to 5 do
  65. begin
  66. wait(s3);
  67. VectorProceso3[i]:=suma;
  68. write(VectorProceso3[i]);
  69. signal(s4);
  70. end;
  71. end;
  72.  
  73.  
  74. (*Cuerpo del PROGRAMA PRINCIPAL*)
  75. begin
  76. suma:=0;
  77. (*Creación e inicialización de semáforos*)
  78. initial(s1,1);
  79. initial(s2,0);
  80. initial(s3,0);
  81. initial(s4,0);
  82. cobegin
  83. P1;
  84. P2;
  85. P3;
  86. coend;
  87. end.
Add Comment
Please, Sign In to add comment