Duda sobre las prioridades del obligatorio

Duda sobre las prioridades del obligatorio

de Federico Andres Nin Albonico -
Número de respuestas: 3
Hola, me parece que no entiendo algo de cómo debería comportarse la cola con prioridades.

Estoy haciendo lo que me dice la letra, que es armar tantos buffers circulares como tengo niveles de prioridades. Cuando me llega un dato lo meto en el buffer que le corresponde según su prioridad. La letra dice que no hay que tener en cuenta si la cola está llena o no, así que por ahora el buffer siempre lo agrega y pisa a los datos viejos.

Lo que no entiendo es qué dato sacar cuando me piden uno. Para mi el algoritmo debería ser:

1. Inicializo p = 0 (prioridad maxima)
2. Elijo el buffer con prioridad p.
3. Si el buffer tiene datos {
Actualizo índices
Devuelvo el más viejo y fin del algoritmo
}else{
Incremento p. Vuelvo a 2.
}

El paso 2 tiene que tener algo tipo "Si p se fue de rango, todos los buffers estaban vacios, no hay datos. Fin. Si no, sigo" para que funcione, no lo agrego arriba para que quede más fácil la lectura.

El problema es que el paso 3 requiere saber si el buffer está vacío o no. Con ese algoritmo, se atienden primero todos los datos de prioridad p antes de pasar a los datos de prioridad p+1, por eso necesito saber cuándo está vacía la cola p. Como la letra dice q no hay q implementar eso, sospecho q entendí mal el comportamiento de las prioridades. Podría hacer una función estaVacia() para una cola y que devuelva siempre 0, pero volvería medio irrelevante lo de las prioridades porque solo usaría la cola p=0.



Gracias

 


En respuesta a Federico Andres Nin Albonico

Re: Duda sobre las prioridades del obligatorio

de Leonardo Steinfeld -

Hola,

En realidad entendiste bien todo, salvo el alcance de la descripción de las funciones. Esas funciones son las públicas. En caso de cola esté llena o vacía, "no se hace nada" significa que no se agrega el dato (llena, la cola de su prioridad está llena, podría haber lugares en colas de menor prioridad) y lo que se retorne no tiene sentido (vacía, todas las colas por prioridad vacías).

Luego la letra dice "Se sugiere incluir funciones auxiliares privadas al módulo." y en esta categoría entrarían las funciones que decís serían necesarias.

Si tenés más dudas volvé a escribir.

Saludos,
Leo
PD: Recuerden de mandar como máximo pseudocódigo, tal cual en esta consulta, nunca código C de la implementación.

En respuesta a Leonardo Steinfeld

Re: Duda sobre las prioridades del obligatorio

de Gonzalo Cu -
No entendi,1) si la cola esta llena tengo que pisar el dato mas viejo, siempre en el mismo nivel de prioridad, no?
2)Cuando extraigo un dato busco en todos los niveles de prioridad, correcto?
En respuesta a Gonzalo Cu

Re: Duda sobre las prioridades del obligatorio

de Leonardo Steinfeld -

Hola,

Respondo entre líneas:

> 1) si la cola esta llena tengo que pisar el dato mas viejo, siempre en el mismo nivel de prioridad, no?
No. Si la cola está llena el dato que se pretende agregar se descarta y no se agrega ("no se hace nada").

> 2)Cuando extraigo un dato busco en todos los niveles de prioridad, correcto?
Sí.

Saludos,
Leo