5. Implemente las funciones esCompatibleTListaPromociones y unirListaPromociones.

5. Implemente las funciones esCompatibleTListaPromociones y unirListaPromociones.

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

Re: 5. Implemente las funciones esCompatibleTListaPromociones y unirListaPromociones.

de Leandro Guzmán Perez Gfeller -
En la función unirListaPromociones, en el caso de que hayan dos promociones que inician en la misma fecha en la l1 y la l2, cual queremos que vaya primero en la nueva lista?
En respuesta a Leandro Guzmán Perez Gfeller

Re: 5. Implemente las funciones esCompatibleTListaPromociones y unirListaPromociones.

de Alejandro Blanco -
Leandro.

Considera que se comienza recorriendo la lista l1, por lo cual en el caso que planteas va a quedar primero la promoción de l1

Saludos
Alejandro B
En respuesta a Alejandro Blanco

Re: 5. Implemente las funciones esCompatibleTListaPromociones y unirListaPromociones.

de JoaquãN Cã“Rdoba Ayala -
Buenas tardes, en el .h de promociones tengo esta función que es orden n, y luego (más abajo) tengo otra función que también me pide que sea orden n, ahora mi pregunta es, como es posible que si comparar dos promociones sea orden n, luego me pidan que compare una promoción con una lista de promociones y esta sea orden n
// Devuelve true si las promociones prom1 y prom2 son compatibles.
// Una promocion es compatible con otra si no comparten productos durante un mismo período de tiempo.
// O de otra manera, no son compatibles si coinciden en el tiempo y además un mismo producto
// es parte de ambas promociones.
// La función es O(n) peor caso.
bool sonPromocionesCompatibles(TPromocion prom1, TPromocion prom2);

// Dada una lista de promociones y una promocion, devuelve true si la
// promoción es compatible con todas las promociones de la lista. La función
// es O(n) peor caso, donde n es la cantidad de promociones de la lista.
bool esCompatibleTListaPromociones(TListaPromociones listaPromociones,
TPromocion promocion);
En respuesta a JoaquãN Cã“Rdoba Ayala

Re: 5. Implemente las funciones esCompatibleTListaPromociones y unirListaPromociones.

de Alejandro Blanco -

Joaquin.

Tenes razón el orden de ejecución de esCompatibleTListaPromociones debería ser O(n*n), pero hagan de cuenta que no se pide orden de ejecución en esCompativleTListaPromociones.

La idea es que usen la función sonPromocionesCompatibles

Saludos

Alejandro B

En respuesta a Alejandro Blanco

Re: 5. Implemente las funciones esCompatibleTListaPromociones y unirListaPromociones.

de Luca Fabrizio Banquero Carbajal -
En la función unirListaPromociones, se puede compartir memoria entre la lista resultante, listaPromociones1 y listaPromociones2, o deben ser 3 listas independientes?
En respuesta a Alejandro Blanco

Re: 5. Implemente las funciones esCompatibleTListaPromociones y unirListaPromociones.

de Franco Bonavena Bertoletti -
A la hora de unir las listas de las promociones, el orden que debe tener la lista unida debe seguir la regla de que estén ordenadas por la fecha de inicio de la promoción, de menor a mayor, ó, se debe unir la primer lista y a continuación la siguiente lista?
En respuesta a Franco Bonavena Bertoletti

Re: 5. Implemente las funciones esCompatibleTListaPromociones y unirListaPromociones.

de Yael Michelena Koifmann -
Hola Franco,

Si, considera que arrancas agregando l1 a la unión y luego l2, con el criterio que se usa en agregarPromocionTListaPromociones.

Saludos!
Yael
En respuesta a Yael Michelena Koifmann

Re: 5. Implemente las funciones esCompatibleTListaPromociones y unirListaPromociones.

de Juanse Larrea Vitalis -
Hola, estoy creando una lista res y luego usando la funcion agregarPromocionTListaPromociones agrego de ambas listas asi como dicen, y me sale la lista impresa como en el .out pero luego me sale Segmentation fault (core dumped) luego, estoy en listaPromociones4-compatible-unir
En respuesta a Franco Bonavena Bertoletti

Re: 5. Implemente las funciones esCompatibleTListaPromociones y unirListaPromociones.

de Raul Maglione -
Buenas Franco,
Lo correcto seria respetar lo que decís si.
Te recuerdo que dentro del mismo TAD podrías tener algo que te ayude a resolver eso sin preocuparte del orden de las cosas.

Saludos,
Raúl.
En respuesta a Alejandro Blanco

Re: 5. Implemente las funciones esCompatibleTListaPromociones y unirListaPromociones.

de Mauro Masena Korolkoff -
buenas, al realizar el código y como se respondió antes no deben compartir memoria las listas usadas con la generada, esto implica crear memoria. El problema que me ocurre es que al ejecutar el caso de prueba me salta error de perdida de memoria ya que no se borra la memoria creada para devolver la unión. Mi pregunta va a si al crear esta nueva unión tengo que borrar la memoria de las listaPromociones1 y listaPromociones2 o el problema es dentro del liberar.
En respuesta a Mauro Masena Korolkoff

Re: 5. Implemente las funciones esCompatibleTListaPromociones y unirListaPromociones.

de Mauro Masena Korolkoff -
al final era un error de interpretación del liberar. Aviso por acá porque falto el '.' antes del 'Si' en las especificaciones de liberarTListaPromociones:
// Función para liberar una lista de promociones
// Recibe una referencia a un elemento de tipo TListaPromociones y libera su
// memoria Si 'liberarPromociones' es true, libera además la memoria de cada una <- en esta linea
// de las promociones en la colección. La función es O(n) peor caso, siendo n
// la cantidad de promociones en la lista.
En respuesta a Alejandro Blanco

Re: 5. Implemente las funciones esCompatibleTListaPromociones y unirListaPromociones.

de Lucas Santiago Acosta De Jesús -
En unirListaPromociones se puede utilizar la función agregarPromocionTListaPromociones? Ya que si la uso creo no se si estoy equivacado el orden daría n1*n2 y no n1+ n2.
Estoy intentando hacer una implementacion con n1 +n2, pero el vangrid me dice que pierdo memoria, la memoria de las promociones se comparten??
En respuesta a Lucas Santiago Acosta De Jesús

Re: 5. Implemente las funciones esCompatibleTListaPromociones y unirListaPromociones.

de Yael Michelena Koifmann -
Hola Lucas,

Es correcto lo que decís, si usan agregarPromocionTListaPromociones no va a cumplir con el orden que pedimos.
Lo ideal es que lo hagan en orden O(n1 + n2), pero igualmente vamos a aceptar las soluciones que hagan uso de agregarPromocionTListaPromociones.

En cuanto a las promociones, si, al hacer la unión la memoria de las promociones se comparte (no tienen que hacer una copia de las mismas).

Saludos!
Yael
En respuesta a Alejandro Blanco

Re: 5. Implemente las funciones esCompatibleTListaPromociones y unirListaPromociones.

de Ignacio Sebastian Silveira Da Silva -
Buenas, tengo un problema con la función unirListaPromociones. La implemente recursivamente, y al llegar a el caso en que una de las 2 listas es NULL, retorno la otra (haciendo que compartan memoria), pero esto me lleva a un problema ya que en el principal.cpp están estas líneas:

codigo

cosa que me termina llevando a que me de error al intentar liberar la segunda lista porque la libera junto con la lista unida, entonces intente hacer una función auxiliar que copia listas para retornar una copia de la lista en su lugar (haciendo que no compartan memoria), y esto resultó para este caso, pero luego me da problemas en el caso 5 del historial (el de avanzar fecha), ya que al no compartir memoria se me quedan perdidos ciertos punteros de las promociones futuras a los cuales no tengo forma de acceder (esto no pasa si hago que si compartan memoria). Estuve viendo por el foro y hay respuestas tanto para sí compartir memoria como para no. Alguna recomendación?
En respuesta a Ignacio Sebastian Silveira Da Silva

Re: 5. Implemente las funciones esCompatibleTListaPromociones y unirListaPromociones.

de Yael Michelena Koifmann -
Hola Ignacio,

La lista que retornas en la unión, no debe compartir memoria con las otras. Lo que si se comparte es la memoria de las promociones.

Espero logres resolver!

Saludos!
Yael