Examen Julio 2019 - problema 2 - parte d

Examen Julio 2019 - problema 2 - parte d

de Esteban Gabriel Risso Martinez -
Número de respuestas: 1

Buenas, tenia una pregunta de la solución de la función mover. 

Supongamos que dirDestino tiene tres bloques de datos, si en el primero ya encontramos una entrada libre se guarda en jfree el indice de dicha entrada, pero la iteración sigue hasta recorrer todos los bloques asociados al direDestino (while (i<IT[dirDestino.inodo ].tope)) quedando en la variable buffdst el ultimo bloque leído (el tercero). 

El problema que me parece que pasa es que cuando al final se van a mover los datos al hacer buffdst[jfree], buffdst no tiene el sector donde estaba la entrada libre, sino que esta almacenando en el ultimo bloque de datos de el dirDestino. 

Entonces se están moviendo las cosas a otro lado, no se si me explico.

Gracias!

Saludos.

En respuesta a Esteban Gabriel Risso Martinez

Re: Examen Julio 2019 - problema 2 - parte d

de Manuel Freire -

Buenas,

Tenés razón en lo que decís, el problema es que en el caso de que se encuentra se debería guardar buffdst en una variable auxiliar antes de seguir iterando (dentro de if(!buffdst[jdst].usado and ifree==-1) ). Luego del while se usaría esa variable en lugar de buffdst que como vos decís no tiene por qué tener los datos que se quieren. Otra opción (aunque no estaría tan bien) sería hacer una nueva lectura con el ifree que tenés guardado, eso generaría una lectura innecesaria pero también funcionaría.

Espero que haya quedado claro.

Saludos!