corregido y completado con casos de prueba