Práctico 5 - Ejercicio 7

Práctico 5 - Ejercicio 7

de Diego Esmir Gonzalez Morales -
Número de respuestas: 1

He estado pensando largo rato este problema y la verdad que me costó muchísimo llegar a algo, que es lo que pego a continuación. Se que no está bien, y tengo dudas respecto a algunas cosas que están escritas mismo en el código. Si alguien tiene una sugerencia, opinión, objeción o lo que sea será más que bien recibido. Por las dudas, adjunto el txt porque la identación acá es complicada.

¡Ah! Y todos los semáforos son binarios excepto auto_entrada

auto_entrada n auto_salida 0
barco_entrada 1 barco_salida 0 esperandoPorBarco 0

PUENTE:
P(esperandoPorBarco)
P(cantAutos) ¿Cómo controlo la cantidad de autos que estaban arriba del puente?
FOR i = 0 TO cantAutos DO
P(auto_salida)
V(cantAutos)
SubirPuente
WHILE cantBarcos != 0 THEN
V(barco_entrada)
P(barco_salida)
BajarPuente
P(cantAutos) ¿Cómo controlo la cantidad de autos que llegaron mientras cruzaba el barco?
FOR i = 0 TO cantAutos DO
V(auto_entrada)
V(cantAutos)

 

AUTO:
P(cantAutos)
cantAutos++
V(cantAutos)

P(auto_entrada)
delay(x)
V(auto_salida)

P(cantAutos)
cantAutos--
V(cantAutos)

 

BARCO:
P(cantBarcos)
cantBarcos++
V(esperandoPorBarco)
V(cantBarcos)

P(barco_entrada)
delay(y)
V(barco_salida)

P(cantBarcos)
cantBarcos--
V(cantBarcos)

En respuesta a Diego Esmir Gonzalez Morales

Re: Práctico 5 - Ejercicio 7

de Jorge Merlino -

Si entiendo bien y las primeras líneas son la inicialización de los semáforos no se que significa inicializar un semáforo en n. ¿Que es n acá?

La clave para controlar el paso de los vehículos son los semáforos de entrada y salida. Haciendo V de los de entrada podés dejar pasar o no a algún tipo de vehículo y luego haciendo P en el de salida podés esperar a que pasen. No deberías restar las variables de conteo en el auto y en el barco sino que las deberías restar en el puente porque de otra forma no sabés cuantos P de salida podés hacer sin bloquearte.

Además seguramente precises otro semáforo al que los barcos y autos hagan V para avisarle al puente que llegó alguien.