Estimados,
Vi la solución de este ejercicio, pero me quedó un poco distinta y me gustaría saber si tiene algún error:
Function checkArchivo (archivo : entry) : boolean
Begin
if (!archivo.usado || archivo.tipo == DIRECTORIO)
return false;
int cantSectores = archivo.tamaño / 512 // Supongo que redondea para arriba
circular : array [0..(MAX_SECTORS_DISK - 1)] of bool;
circular = {false..false};
int sectorActual = archivo.comienzo;
while (F[sectorActual] != 0){
if (sectorActual < -1 || (MAX_SECTORS_DISK - 1) < sectorActual)
return false;
if (circular[sectorActual])
return false;
circular[sectorActual] = true;
cantSectores--;
if (cantSectores < 0)
return false;
sectorActual = F[sectorActual];
}
return true;
End