5. Implemente la funcion masPrioritarioTColaEnvios, invertirPrioridadTColaEnvios y maxTColaEnvios

5. Implemente la funcion masPrioritarioTColaEnvios, invertirPrioridadTColaEnvios y maxTColaEnvios

de Alejandro Blanco -
Número de respuestas: 18
En respuesta a Alejandro Blanco

Re: 5. Implemente la funcion masPrioritarioTColaEnvios, invertirPrioridadTColaEnvios y maxTColaEnvios

de Pedro Calado Moura -
Hola Buenas Tardes, estoy teniendo problemas en hacer la funcion invertirPrioridadTColaEnvios,
 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
Adjunto Sin título.jpeg
En respuesta a Pedro Calado Moura

Re: 5. Implemente la funcion masPrioritarioTColaEnvios, invertirPrioridadTColaEnvios y maxTColaEnvios

de Alejandro Blanco -
Hola Pedro.

Estamos revisando el caso de prueba y nuestra implementación de referencia. En breve vemos de responderte.

Saludos

Alejandro B
En respuesta a Pedro Calado Moura

Re: 5. Implemente la funcion masPrioritarioTColaEnvios, invertirPrioridadTColaEnvios y maxTColaEnvios

de Manuel Muga Medero -
me sumo a la consulta del companero, me pasa exactamente lo mismo, con los test nuevos tampoco se soluciona.
En respuesta a Manuel Muga Medero

Re: 5. Implemente la funcion masPrioritarioTColaEnvios, invertirPrioridadTColaEnvios y maxTColaEnvios

de Raul Maglione -
Buenas Manuel,

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.
En respuesta a Alejandro Blanco

Re: 5. Implemente la funcion masPrioritarioTColaEnvios, invertirPrioridadTColaEnvios y maxTColaEnvios

de Caio Renato Puyol Leguiza -
Buenas, tengo algunas preguntas sobre el invertirPrioridadTColaEnvios sobre como es su funcionamiento si ¿Es acumulable(si se ejecuta dos veces vuelve a ser un heap normal)?¿Nos serviria tener un puntero al elemento mas priorizado (por el tema que al invertir sigue pidendo al mas prioritario en el heap normal)?¿Importa el orden en cuanto a la invercion, respetando la idea de heap(ya que solo importa si el padre es mas priorizado que los hijos (en el heap comun))?Muchas gracias!
En respuesta a Caio Renato Puyol Leguiza

Re: 5. Implemente la funcion masPrioritarioTColaEnvios, invertirPrioridadTColaEnvios y maxTColaEnvios

de Raul Maglione -
Buenas Caio,

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.
En respuesta a Alejandro Blanco

Re: 5. Implemente la funcion masPrioritarioTColaEnvios, invertirPrioridadTColaEnvios y maxTColaEnvios

de Facundo Díaz Bica -

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

Adjunto Captura desde 2024-11-07 19-39-22.png
Adjunto Captura desde 2024-11-07 19-40-11.png
En respuesta a Facundo Díaz Bica

Re: 5. Implemente la funcion masPrioritarioTColaEnvios, invertirPrioridadTColaEnvios y maxTColaEnvios

de Raul Maglione -
Buenas Facundo,

Disculpa no entendí tu duda, ahí te devolvió el de 2025 no el de 2010, entonces cual es la duda?

Saludos,
Raúl.
En respuesta a Raul Maglione

Re: 5. Implemente la funcion masPrioritarioTColaEnvios, invertirPrioridadTColaEnvios y maxTColaEnvios

de Facundo Díaz Bica -
En teoría me tendría que devolver el envío de 2010 porque la fecha es menor, o estoy entendiendo mal la letra?
En respuesta a Facundo Díaz Bica

Re: 5. Implemente la funcion masPrioritarioTColaEnvios, invertirPrioridadTColaEnvios y maxTColaEnvios

de Gonzalo Nicolás Raymond Morales -
Tengo la misma duda con referencia al comportamiento de orden por defecto al ejecutar masPrioritarioTColaEnvios. 
El más prioritario debería ser el de la fecha menor, ósea si tenes un envío con fecha 2010 y otro con fecha 2025, el con fecha 2010 debería ser mas prioritario, en cambio al ejecutar los tests con este comportamiento no pasa la prueba. Y en el .out de la prueba espera que el mas prioritario sea el con fecha 2025 lo cual no tiene sentido porque contradice el comportamiento por defecto, cabe aclarar que todo esto sucede antes de la ejecución de invertirPrioridad. 
Lo que me hace pensar que o están mal hechos los test o esta mal hecho el enunciado que describe el orden por defecto de lo que se considera mas prioritario.
En respuesta a Gonzalo Nicolás Raymond Morales

Re: 5. Implemente la funcion masPrioritarioTColaEnvios, invertirPrioridadTColaEnvios y maxTColaEnvios

de Gaston Alvarez Dorado -
Me sumo a la duda de los compañeros ya que tengo el mismo error que comentan.
En respuesta a Gaston Alvarez Dorado

Re: 5. Implemente la funcion masPrioritarioTColaEnvios, invertirPrioridadTColaEnvios y maxTColaEnvios

de Alejandro Blanco -

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.

En respuesta a Alejandro Blanco

Re: 5. Implemente la funcion masPrioritarioTColaEnvios, invertirPrioridadTColaEnvios y maxTColaEnvios

de Facundo Castro Perdomo -
Buenas estoy con una duda. Uso el invertir,y creo que funciona bien,porque el orden me queda, raiz La del 2010,izq la del 2024 y der la de 2025. pero claro,cuando se usan los 3 desencolar al final,Mi funcion de desencolar la hice para que ordene todo por las prioridades principales(osea de la mas cerca a la mas antigua) por lo tanto por mas que el invertir esta bien implementado,a la hora de borrar me tira q borra primero el 2025 antes que el 2024 y me da error el caso de prueba
En respuesta a Facundo Castro Perdomo

Re: 5. Implemente la funcion masPrioritarioTColaEnvios, invertirPrioridadTColaEnvios y maxTColaEnvios

de Facundo Castro Perdomo -
Este es el error que me tira el caso de prueba. Claro,ahora me doy cuenta que cuando elimina,elimina la raiz pero luego como el desencolar sigue con el regimen de masPrioridad = la fecha mas reciente,agarra el 2025 y ahi borra el 2025. no se si es un error mio o si esto tendria que ser asi

Adjunto Captura de pantalla 2024-11-10 133817.jpg
En respuesta a Facundo Castro Perdomo

Re: 5. Implemente la funcion masPrioritarioTColaEnvios, invertirPrioridadTColaEnvios y maxTColaEnvios

de Raul Maglione -
Buenas Facundo,

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.
En respuesta a Raul Maglione

Re: 5. Implemente la funcion masPrioritarioTColaEnvios, invertirPrioridadTColaEnvios y maxTColaEnvios

de Facundo Castro Perdomo -
Aaaaah ok ok, yo la verdad había pensado en ponerle comportamiento a las funciones dependiendo el ordenamiento pero ta ,queria sacarme la duda antes de modelarlo,ahora me quedo claro. Muchisimas gracias Raul!!!!!
En respuesta a Facundo Castro Perdomo

Re: 5. Implemente la funcion masPrioritarioTColaEnvios, invertirPrioridadTColaEnvios y maxTColaEnvios

de Raul Maglione -
Te adelanto que para solucionar este problema existen varias soluciones distintas, como consejo implementa la primera que se te ocurra y que no implique hacer cambios muy drásticos en lo que ya tenes programado aunque no te olvides de revisar las funciones que tenes y fijarte si siguen operando como deberían pre y post invertir. Algún test propio no seria malo si tenes dudas en alguna función.
En respuesta a Alejandro Blanco

Re: 5. Implemente la funcion masPrioritarioTColaEnvios, invertirPrioridadTColaEnvios y maxTColaEnvios

de Martin Gonzalez Blasco -
Buenas, me esta saliendo el siguiente invalid read que no me marca ninguna linea del modulo colaEnvios:

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...