Incrustar presentación
Descargar para leer sin conexión
![PROGRAM banco;
{agregar el alg de dekker en las seccion critica}
CONST NCTAS=20;
VAR Cuenta : array[1..NCTAS] of integer; (* Almacena los saldos *)
i: Integer;
PROCESS Auditor;
VAR ci, Total:INTEGER;
BEGIN
REPEAT
Total:=0;
FOR ci:=1 TO NCTAS DO
Total:= Total + Cuenta[ci];
Writeln('Total : ', Total);
FOREVER
END;
PROCESS banquero;
VAR c1, c2, cant: Integer;
BEGIN
REPEAT
c1 := RANDOM(NCTAS-1)+1; (* Origen *)
c2 := RANDOM(NCTAS-1)+1; (* Destino *)
cant:=0;
IF (Cuenta[c1]>50) THEN cant := RANDOM(50);
Cuenta[c1] := Cuenta[c1] - cant ;
Cuenta[c2] := Cuenta[c2] + cant ;
FOREVER
END;
BEGIN (* Principal *)
For i:= 1 TO NCTAS DO cuenta[i]:=100;
COBEGIN
Banquero;
Auditor
COEND
END.](https://image.slidesharecdn.com/auditor-banquero-140709104340-phpapp02/85/Auditor-banquero-1-320.jpg)

Este programa simula las operaciones de un banco con 20 cuentas. Un proceso auditor calcula el total de saldos de las cuentas periódicamente, mientras que un proceso banquero realiza transferencias aleatorias entre cuentas, restando y sumando cantidades al azar siempre que haya fondos suficientes. El programa ejecuta estas operaciones de forma concurrente para simular el funcionamiento de un banco con múltiples clientes y transacciones.
![PROGRAM banco;
{agregar el alg de dekker en las seccion critica}
CONST NCTAS=20;
VAR Cuenta : array[1..NCTAS] of integer; (* Almacena los saldos *)
i: Integer;
PROCESS Auditor;
VAR ci, Total:INTEGER;
BEGIN
REPEAT
Total:=0;
FOR ci:=1 TO NCTAS DO
Total:= Total + Cuenta[ci];
Writeln('Total : ', Total);
FOREVER
END;
PROCESS banquero;
VAR c1, c2, cant: Integer;
BEGIN
REPEAT
c1 := RANDOM(NCTAS-1)+1; (* Origen *)
c2 := RANDOM(NCTAS-1)+1; (* Destino *)
cant:=0;
IF (Cuenta[c1]>50) THEN cant := RANDOM(50);
Cuenta[c1] := Cuenta[c1] - cant ;
Cuenta[c2] := Cuenta[c2] + cant ;
FOREVER
END;
BEGIN (* Principal *)
For i:= 1 TO NCTAS DO cuenta[i]:=100;
COBEGIN
Banquero;
Auditor
COEND
END.](https://image.slidesharecdn.com/auditor-banquero-140709104340-phpapp02/85/Auditor-banquero-1-320.jpg)