Closed jglaubart closed 4 months ago
Supongo que te referís al 4, no al 3. Es lo mismo que el vectorADT que se hizo en clase y está en la guía. Sin los structs no te puedo decir si está bien o no. Sólo decirte que nunca un unsigned puede ser negativo, así que esto if(pos < 0) {return;} no tiene sentido ¿Para qué estás recibiendo la función de comparación? Si le recibís es porque deberías usarla, por ejemplo en getPosition, en vez del == Y si estás usando el campo occupied con 0 o 1, cuando hacés el realloc deberías completar las nuevas posiciones con cero O sea, lo mismo que hicimos en vectorADT
Si perdon, era el 4. Lo de la funcion cmp no me di cuenta, seria cambiar las comparaciones de los elemtype y hacerlas con la funcion. Sacando entonces el if(pos<0){return;} estaria bien? Osea todas las posiciones serian validas. (lo hice suponiendo que el usuario me pasa las posiciones del vector teniendo al 0 como la primera) Ahora agrego lo de los 0 en isOccupied y estos son los structs del codigo:
typedef struct elem{
elemType elem;
char isOccupied;
}TElem;
typedef struct collectionCDT{
TElem * elems;
size_t reserved; //espacio reservado, largo del vector
size_t count; // cantidad de elementos
compare cmp;
} collectionCDT;
y asi me quedaria entonces la funcion putElement:
void putElement(collectionADT c, elemType elem, size_t pos){ //HACER EFICIENTE
if(pos > c->reserved){
c->elems = realloc(c->elems, pos * sizeof(TElem));
for(int i = c->reserved; i<pos; i++){
c->elems[i].isOccupied = 0;
}
c->reserved = pos;
}
c->elems[pos].elem = elem;
c->elems[pos].isOccupied = 1;
}
Las estructuras están bien. Fijate que si tenés el campo count tenés que mantenerlo en putElement. Pero insisto, es lo mismo que el vectorADT que está en la guía, así que podés hacer ese y usar el test publicado para verificar que funcione.
Perfecto, gracias
Buenas, que tal? Estaba mirando un parcial y queria saber si lo que hice para el ejercicio 3 esta bien. Si solo indica que una funcion debe ser lo mas eficiente posible no significa que todas deban serlo no? Porque siento que es una resolucion no muy rebuscada, pero no se me ocurre otra forma. 2P 2022 2C.pdf