Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- program Ejercicio1;
- var numero, suma: integer;
- var s1,s2,s3,s4: semaphore;
- (*Código del Proceso 1: Lee datos numéricos de un array*)
- process P1;
- type vector = array[1..5] of integer;
- var VectorProceso1 : vector;
- var i: integer;
- (*Rellenar el vector de 25 elementos*)
- procedure rellenarVector(A:vector);
- var i:integer;
- begin
- for i:=1 to 5 do
- begin
- A[i]:=random(20);
- write(A[i]);
- end;
- end;
- (*Cuerpo principal del Proceso*)
- begin
- rellenarVector(VectorProceso1);
- for i:=1 to 5 do
- begin
- wait(s1);
- numero:= VectorProceso1[i]; (*Leer número*)
- signal(s2);
- end;
- end;
- (*Código del Proceso 2: Coge los datos y los suma de 5 en 5*)
- process P2;
- var i2,j2: integer;
- (*Cuerpo principal del Proceso*)
- begin
- for i2:=1 to 5 do
- begin
- for j2:=1 to 1 do
- begin
- wait(s2);
- suma:= suma+numero;
- signal(s1);
- end;
- signal(s3);
- wait(s4);
- end;
- end;
- (*Código del Proceso 3: Coge el resultado de la suma y lo escribe
- en un nuevo array*)
- process P3;
- type vectorpeque = array[1..5] of integer;
- var VectorProceso3: vectorpeque;
- var i:integer;
- (*Cuerpo principal del Proceso*)
- begin
- for i:=1 to 5 do
- begin
- wait(s3);
- VectorProceso3[i]:=suma;
- write(VectorProceso3[i]);
- signal(s4);
- end;
- end;
- (*Cuerpo del PROGRAMA PRINCIPAL*)
- begin
- suma:=0;
- (*Creación e inicialización de semáforos*)
- initial(s1,1);
- initial(s2,0);
- initial(s3,0);
- initial(s4,0);
- cobegin
- P1;
- P2;
- P3;
- coend;
- end.
Add Comment
Please, Sign In to add comment