Re: 6. Implemente la función avanzarAFechaTHistorial.
Re: 6. Implemente la función avanzarAFechaTHistorial.
Te esperamos en alguna clase de consulta para que nos muestres el código.
Saludos,
Raúl.
Re: 6. Implemente la función avanzarAFechaTHistorial.
Re: 6. Implemente la función avanzarAFechaTHistorial.
Re: 6. Implemente la función avanzarAFechaTHistorial.
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
Re: 6. Implemente la función avanzarAFechaTHistorial.
Buenas, pude solucionarlo sí, no estaba teniendo en consideración a las futuras para la función! Muchas gracias por la respuesta de igual modo
Re: 6. Implemente la función avanzarAFechaTHistorial.
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 ?
Re: 6. Implemente la función avanzarAFechaTHistorial.
> ==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)
Re: 6. Implemente la función avanzarAFechaTHistorial.
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
Re: 6. Implemente la función avanzarAFechaTHistorial.
Re: 6. Implemente la función avanzarAFechaTHistorial.
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
Re: 6. Implemente la función avanzarAFechaTHistorial.
Re: 6. Implemente la función avanzarAFechaTHistorial.
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
Re: 6. Implemente la función avanzarAFechaTHistorial.
Re: 6. Implemente la función avanzarAFechaTHistorial.
Al igualar las finalizadas a la unión, te estás asegurando de liberar la memoria de las finalizadas antes?
Espero puedas resolver!
Saludos,
Yael
Re: 6. Implemente la función avanzarAFechaTHistorial.
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==
Re: 6. Implemente la función avanzarAFechaTHistorial.
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