6. Implemente la función avanzarAFechaTHistorial.

6. Implemente la función avanzarAFechaTHistorial.

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

Re: 6. Implemente la función avanzarAFechaTHistorial.

de Mateo Daniel Correa Franco -
Tengo una duda, quisiera saber si en mi implementacion en particular cumplo el O(n) requerido. Pues el codigo utiliza las funciones proporcionadas por listaPromociones.cpp (que cumplen su debido orden) de manera que el T(n) es acotado superiormente por una funcion c.f(n)
En respuesta a Alejandro Blanco

Re: 6. Implemente la función avanzarAFechaTHistorial.

de Thiago Ferreira Arostegui -
Buenas tardes, estoy teniendo el siguiente problema en el diff, supuse que el problema  se podría estar generando en "ObtenerPromocionesActivas" pero al parecer, por más cambio de la lógica que haga, siempre llega la mismo resultado, el elemento 4 se está tomando como activo cuando no lo es. 

Saludos

En respuesta a Thiago Ferreira Arostegui

Re: 6. Implemente la función avanzarAFechaTHistorial.

de Thiago Ferreira Arostegui -
Me falto aclarar, esto es del combindo del historial, saludos.
En respuesta a Thiago Ferreira Arostegui

Re: 6. Implemente la función avanzarAFechaTHistorial.

de Yael Michelena Koifmann -
Hola Thiago,

Corroboraste que en obtenerPromocionesActivas estés utilizando el criterio correcto para decir que una promoción es activa (o sea, que la promoción arranca antes o en la misma fecha con la que comparas y termina también en la misma fecha o después)?

Si seguís sin encontrar el error, te recomiendo que hagas el test a mano (en papel) y veas mejor lo que está pasando.

Saludos!
Yael
En respuesta a Alejandro Blanco

Re: 6. Implemente la función avanzarAFechaTHistorial.

de Tomás Facundo Taborda Taborda -
buenas tardes al ejecutar el test me sale esto 26,27d25 < Promocion #1 del 1/12/2023 al 1/1/2024 < Productos: 1 2
35,36d32 < Promocion #1 del 1/12/2023 al 1/1/2024 < Productos: 1 2
37a34
> 29> Promociones futuras:
40d36 < 29> Promociones futuras:
44a41,46
> ==10703== 82 (32 direct, 50 indirect) bytes in 1 blocks are definitely lost in loss record 5 of 5
> ==10703== at 0x483BE63: operator new(unsigned long) (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so)
> ==10703== by 0x10D349: crearTPromocion(int, rep_fecha*, rep_fecha*, int) (promocion.cpp:13)
> ==10703== by 0x10C2CE: main_crearPromocion(rep_promocion*&) (principal.cpp:1398)
> ==10703== by 0x10A04E: main (principal.cpp:532)
> ==10703== ademas de lo de la perdida de memoria, puede ser que el diff este mal por la funcion obtener finalizada y obtener activas siendo que me tengo todo correctos los test de ese modulo o el error esta en avanxar fecha ?
En respuesta a Alejandro Blanco

Re: 6. Implemente la función avanzarAFechaTHistorial.

de Fausto Britos Peisino -
Buenas, cuando ejecuto el caso de prueba el diff me da correcto, pero me marca una perdida de memoria que no se bien donde puede ocasionarse. En mi codigo libero cada lista del historial con la funcion de liberarListaPromociones pero con false(osea no libero las promociones ya que las utilizo), pero aun asi me da el siguiente error:
> ==31117== 48 (16 direct, 32 indirect) bytes in 1 blocks are definitely lost in loss record 3 of 3
> ==31117== at 0x4849013: operator new(unsigned long) (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
> ==31117== by 0x10DA00: agregarPromocionTListaPromociones(rep_listaPromociones*&, rep_promocion*) (listaPromociones.cpp:14)
> ==31117== by 0x10E04E: unirListaPromociones(rep_listaPromociones*, rep_listaPromociones*) (listaPromociones.cpp:148)
> ==31117== by 0x10E368: avanzarAFechaTHistorial(rep_historial*, rep_fecha*) (historial.cpp:48)
> ==31117== by 0x10D0F2: main_avanzarAFechaHistorial(rep_historial*) (principal.cpp:1706)
> ==31117== by 0x10A5A1: main (principal.cpp:632)
En respuesta a Fausto Britos Peisino

Re: 6. Implemente la función avanzarAFechaTHistorial.

de Yael Michelena Koifmann -
Hola Fausto,

Te aconsejo que revises que efectivamente estés liberando todas las listas que no sean las que van a quedar en el historial.
Por ejemplo: si estás realizando la unión de dos listas para después utilizarla como la lista de promociones pasadas del historial, asegurate de liberar primero la lista de las pasadas y luego asignarle la unión.

Espero haya quedado claro!

Saludos,
Yael
En respuesta a Alejandro Blanco

Re: 6. Implemente la función avanzarAFechaTHistorial.

de Julieta Fuentes Garcia -
Se puede crear una función obtenerPromocionesFuturas para utilizar en esta parte?
En respuesta a Julieta Fuentes Garcia

Re: 6. Implemente la función avanzarAFechaTHistorial.

de Yael Michelena Koifmann -
Hola Julieta,

Si estás pensando en crear esa función dentro del módulo de listaPromociones (como si hicieras algo similar a obtenerPromocionesActivas), no, no se puede hacer ya que implicaría modificar el .h.
Si la estás pensando para el módulo historial, si, podés tener las funciones que quieras siempre y cuando sólo las utilices dentro de ese módulo.

Saludos!
Yael
En respuesta a Alejandro Blanco

Re: 6. Implemente la función avanzarAFechaTHistorial.

de Sofía Belén Riela Acosta -
Al ejecutar este caso de prueba me sale este error y aunque ya he revisado el out y mi salida, no logro encontrar el error, según lo que entiendo se mueve correctamente la fecha pero las activas no se imprimen pero no entiendo como resolverlo
Adjunto Captura de pantalla 2024-10-23 175930.png
En respuesta a Alejandro Blanco

Re: 6. Implemente la función avanzarAFechaTHistorial.

de Juan Manuel Caso Quinelli -
Buenas, ejecutando los dos ultimos test estoy teniendo problemas de invalid read al intentar imprimir las promociones finalizadas/ activas luego de avanzar la fecha. En la funcion avanzar fecha estoy haciendo lo siguiente:

Si la fecha nueva es mayor a la fecha de historial{
creo una lista obteniendo las promociones que finalizaron dentro de historial->activas
igualo las finalizadas a la union entre las ya finalizadas y las nuevas finalizadas
libero la lista creada
realizo un procedimiento analogo para activas
libero la fecha vieja del historial
igualo la fecha del historial a la nueva fecha
}

Disculpenme la hora pero genuinamente no se a que memoria libera esta accediendo.
Desde ya gracias
En respuesta a Juan Manuel Caso Quinelli

Re: 6. Implemente la función avanzarAFechaTHistorial.

de Juan Manuel Caso Quinelli -
ademas a modo de prueba para intentar ver el error, al final de avanzarAFechaTHistorial ejecuto la instrucción imprimirTPromocionesFinalizadosTHistorial(historial); y funciona perfectamente sin darme segmentation fault.
En respuesta a Alejandro Blanco

Re: 6. Implemente la función avanzarAFechaTHistorial.

de Andrès Ramìrez Marroco -

Hola buenas, me estaría saltando ese error , yo elimino todas las listas que creo pero aun así hay un problema de memoria, alguna idea de que podría ser?
Gracias. 
==56470== 24 (8 direct, 16 indirect) bytes in 1 blocks are definitely lost in loss record 2 of 2

==56470==    at 0x4842F95: operator new(unsigned long) (vg_replace_malloc.c:483)

==56470==    by 0x404B8A: crearTListaPromocionesVacia() (listaPromociones.cpp:14)

==56470==    by 0x404E84: obtenerPromocionesFinalizadas(rep_listaPromociones*&, rep_fecha*) (listaPromociones.cpp:83)

==56470==    by 0x4054E1: avanzarAFechaTHistorial(rep_historial*, rep_fecha*) (historial.cpp:138)

==56470==    by 0x404429: main_avanzarAFechaHistorial(rep_historial*) (principal.cpp:1706)

==56470==    by 0x40212D: main (principal.cpp:632)

==56470==

En respuesta a Andrès Ramìrez Marroco

Re: 6. Implemente la función avanzarAFechaTHistorial.

de Yael Michelena Koifmann -
Hola Andrés,

Como se respondió mas arriba: revisaste que efectivamente estés liberando todas las listas que no sean las que van a quedar en el historial?
Por ejemplo: si estás realizando la unión de dos listas para después utilizarla como la lista de promociones pasadas del historial, asegurate de liberar primero la lista de las pasadas y luego asignarle la unión.

Si no sale te diría que lo vayas ejecutando a mano para ver donde es que perdés la memoria.
Espero puedas solucionarlo!

Saludos,
Yael