PI-ITBA / 2024_02

Consultas 2C 2024
4 stars 0 forks source link

TP11 EJ8 #151

Open FacuLL opened 2 weeks ago

FacuLL commented 2 weeks ago

Buenas tardes! En este ejercicio:

Hacer un T.A.D. para conjuntos: elementos no repetidos, sin orden. Debe tener al menos las funciones de agregar o remover un elemento, unión, intersección y resta de conjuntos. En la implementación usar listADT: dentro de setCDT tener un campo que sea un listADT.

Mi duda es: ¿Tengo que usar el listADT hecho en clase?. Si es así, ¿puedo agregarle funciones como listUnion?. Además, el ejercicio pide que los elementos no estén en orden, sin embargo el listADT hecho en clase agrega los elementos en forma ordenada. ¿Tendría que crear un nuevo listADT para este ejercicio? La otra duda que me surgió es: Yo, como programador de setADT soy el usuario de listADT. ¿Puedo usar las funciones de iteración de listADT en mi setADT o estaría mal? Pues si el usuario de setADT quisiera usar también listADT y sus iteradores estaría interfiriendo con eso.

Gracias!

marcelogarberoglio commented 2 weeks ago

Pueden usar el listADT hecho en clase. No es necesario agregarle funciones, se puede hacer la unión, intersección y resta usando los iteradores (tobegin, etc.). Aunque es un poco más largo, por lo que podrían agregar una función listUnion en listADT que dada dos listas retorne una nueva. Cuando dice "sin orden" significa que no hay funciones que tengan que ver con el orden, como por ejemplo el primero o el último elemento, pero para poder hacer la unión y demás te conviene mantenerlos ordenados, sinó serían demasiado ineficientes El usuario podría tener setADT y listADT siempre y cuando sean del mismo tipo. Es la limitación que dijimos en clase de usar TADs "genéricos" definiendo el elemType en el .h Para ser realmente genérico tendríamos que usar void *, pero para fines académicos nos sirve más el uso del typedef para el elemType

FacuLL commented 1 week ago

Buenas noches! No terminé de entender lo del "sin orden". La lista debe estar ordenada para que union y demas sean eficientes, pero que quisiste decir con que no hay funciones que tengan que ver con el orden?

marcelogarberoglio commented 1 week ago

"sin orden" significa que en el .h no hay ninguna función que te obligue a guardar los datos en forma ordenada, no hay función "primer elemento", "último elemento", ni funciones para recorrerlo en forma ordenada. Pero para poder hacer la unión y demás en forma eficiente te conviene guardarlos en forma ordenada.

FacuLL commented 1 week ago

Perfecto Marcelo, gracias y perdón por la hora.