5. Implemente la funcion masPrioritarioTColaEnvios, invertirPrioridadTColaEnvios y maxTColaEnvios
Re: 5. Implemente la funcion masPrioritarioTColaEnvios, invertirPrioridadTColaEnvios y maxTColaEnvios
hice la funcion cambiando el orden de proridad pero el caso de invertir esta mal, no se si puedo describir la logica que hice (puedo enviar por privado?) pero hoy fui a la clase de practico de Libertad Tansini y ella me dijo que la funcion que hice esta bien, pregunto de cual proridad se elige de intercambiar.
Paso Junto una foto de cual es la diferencia que hay entre el caso de prueba (test) y el mio en la inversion
Re: 5. Implemente la funcion masPrioritarioTColaEnvios, invertirPrioridadTColaEnvios y maxTColaEnvios
Estamos revisando el caso de prueba y nuestra implementación de referencia. En breve vemos de responderte.
Saludos
Alejandro B
Re: 5. Implemente la funcion masPrioritarioTColaEnvios, invertirPrioridadTColaEnvios y maxTColaEnvios
Re: 5. Implemente la funcion masPrioritarioTColaEnvios, invertirPrioridadTColaEnvios y maxTColaEnvios
Con la nueva versión de los test el comentario de Pedro quedo desactualizado.
Coméntanos más en detalle cual es el problema que tenes y vemos de solucionarlo.
Saludos,
Raúl.
Re: 5. Implemente la funcion masPrioritarioTColaEnvios, invertirPrioridadTColaEnvios y maxTColaEnvios
Re: 5. Implemente la funcion masPrioritarioTColaEnvios, invertirPrioridadTColaEnvios y maxTColaEnvios
Las respuestas a tus preguntas son:
1) Debería.
2) Cuando invertís la prioridad cambia, por lo que el mas prioritario antes de invertir es uno y luego de invertir no tiene porque ser el mismo, aunque el tiempo de masPrioritarioTColaEnvios deberia ser O(1) por lo que la estrategia del puntero que mencionas no estaría mal, seguí por ahí que no vas mal encaminado.
3) Lo que importa es que al desencolar retornes siempre el mas prioritario (respetando los ordenes de tiempo), después el como los almacenes dentro de la estructura no importa mientras las funciones anden como deben y en los ordenes estipulados, asi que guardalos como quieras (respetando obvio la idea que comentas del heap).
Saludos,
Raúl.
Re: 5. Implemente la funcion masPrioritarioTColaEnvios, invertirPrioridadTColaEnvios y maxTColaEnvios
Buenas, me gustaría saber por que si se crean estos 3 envíos, y siguiendo la letra (""El criterio por defecto para establecer la prioridad entre envíos es que un envío e1 es prioritario ante otro envío e2 si la fecha de envío de e1 es menor que la de e2.""). Cuando se consulta cual tiene mayor prioridad, la respuesta esperada es el envío de 2025 y no el de 2010
Re: 5. Implemente la funcion masPrioritarioTColaEnvios, invertirPrioridadTColaEnvios y maxTColaEnvios
Disculpa no entendí tu duda, ahí te devolvió el de 2025 no el de 2010, entonces cual es la duda?
Saludos,
Raúl.
Re: 5. Implemente la funcion masPrioritarioTColaEnvios, invertirPrioridadTColaEnvios y maxTColaEnvios
Re: 5. Implemente la funcion masPrioritarioTColaEnvios, invertirPrioridadTColaEnvios y maxTColaEnvios
Re: 5. Implemente la funcion masPrioritarioTColaEnvios, invertirPrioridadTColaEnvios y maxTColaEnvios
Re: 5. Implemente la funcion masPrioritarioTColaEnvios, invertirPrioridadTColaEnvios y maxTColaEnvios
El envío de mayor prioridad (por defecto) es el que tiene la mayor fecha de envío. La letra no quedó bien, esta debería decir:
El criterio por defecto para establecer la prioridad entre envíos es que un envío e1 es prioritario ante otro envio e2 si la fecha de envío de e1 es mayor que la de e2. Este criterio se puede modificar (con la función invertirPrioridadTColaEnvios), con lo que se logra que el envío prioritario sea el de fecha de envío menor.
Yo ahora hago la corrección.
Disculpen el error en la letra.
Saludos
Alejandro B.
Re: 5. Implemente la funcion masPrioritarioTColaEnvios, invertirPrioridadTColaEnvios y maxTColaEnvios
Re: 5. Implemente la funcion masPrioritarioTColaEnvios, invertirPrioridadTColaEnvios y maxTColaEnvios
Re: 5. Implemente la funcion masPrioritarioTColaEnvios, invertirPrioridadTColaEnvios y maxTColaEnvios
El problema que introduce el invertir es que cambia la prioridad para todo, osea si tu desencolar o maxproritario daban un elemento de la cola cuando inviertas van a tener que darte otro distinto.
La mayoría de funciones del tad van a tener comportamientos distintos dependiendo de si esta o no invertida.
Espero se entendiera la aclaración, igual no dudes en volver a preguntar si necesitas algo mas detallado.
Saludos,
Raúl.
Re: 5. Implemente la funcion masPrioritarioTColaEnvios, invertirPrioridadTColaEnvios y maxTColaEnvios
Re: 5. Implemente la funcion masPrioritarioTColaEnvios, invertirPrioridadTColaEnvios y maxTColaEnvios
Re: 5. Implemente la funcion masPrioritarioTColaEnvios, invertirPrioridadTColaEnvios y maxTColaEnvios
Invalid read of size 8
> ==63803== at 0x405319: imprimirTEnvio(rep_envio*) (envio.cpp:39)
> ==63803== by 0x404D29: main_masPrioritarioTColaEnvios(rep_cola_envios*&) (principal.cpp:1602)
> ==63803== by 0x40244C: main (principal.cpp:557)
> ==63803== Address 0x8 is not stack'd, malloc'd or (recently) free'd
Ademas, cuando ejecuto el test a mano e imprimo la cola luego de invertirla, no imprime nada. Me imagino que lo que esta pasando es que al invertir la cola me la deja
toda con punteros NULL. Ejecutando a mano, el error core salta ni bien invoco para devolver el mas prioritario luego de invertirla (porque accede a un puntero NULL, supongo). Me imagino que a eso se refiere en la linea 1602 en el principal.cpp
En la consulta me dijeron que mi idea estaba correcta, pero hice toda la funcion con dos metodos diferentes (que se basan en la misma idea) y en ambos me salta el mismo error. No se si puedo dar mas detalles de lo que hice...