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.
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
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.
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);
// 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.
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 Luca Fabrizio Banquero Carbajal
Re: 5. Implemente las funciones esCompatibleTListaPromociones y unirListaPromociones.
Hola Luca,
No, no deben compartir memoria.
Saludos!
Yael
No, no deben compartir memoria.
Saludos!
Yael
En respuesta a Alejandro Blanco
Re: 5. Implemente las funciones esCompatibleTListaPromociones y unirListaPromociones.
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.
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
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.
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.
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.
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.
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.
// 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.
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??
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.
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
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.
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:
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?
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.
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
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