Documente Academic
Documente Profesional
Documente Cultură
Suponiendo que
ella me ame, ½cómo me importunará a la larga! y suponiendo que
no me ame, ½cómo no ha de tener mayores razones todavía para
Universidad Simón Bolívar volverse importuna a la larga! No hay en esta disyuntiva más que
Departamento de Computación dos maneras de ser importuno. ½Casémonos, pues!
y Tecnología de la Información
Laboratorio de Computación II Aurora, Federico Nietzsche.
Sep-Dic 2018
struct
En este laboratorio primero se escribirán los algoritmos necesarios para implementar el tipo abstracto de
datos Conjunto usando un que contiene el tamaño actual del conjunto, el tamaño máximo del mis-
mo y un apuntador a un arreglo de enteros donde se almacenan los elementos del conjunto. Finalmente se
presentará el tipo Iterador para el tipo Conjunto.
Tareas
///Modelo de representación.
///Un Conjunto será un apuntador a un Conj
///que es un registro con tres campos que representan
///el tamaño máximo del conjunto---su capacidad---,
///un arreglo a de tamaño MAX, y el número de elementos
///sctualmente en el conjunto.
///Invariante de representación:
///tam < MAX ....
///Oservadores:
///Pre: True El mecanismo de agregar asegura que siempre tam < MAX
void agregar(int x, Conjunto c){
int k = 0;
while(k<c->tam && x != (c->a)[k]) k++;
if(k >= c->tam) (c->a)[(c->tam)++] = x;
if(c->tam == c->MAX) reSize(c);
}
///Pre: True
void remover(int x, Conjunto c){
int k = 0;
while(k < c->tam && x != (c->a)[k]) k++;
if(k < c->tam) (c->a)[k] = (c->a)[--(c->tam)];
}
int main(){///
Conjunto b = newConjunto(2), a = newConjunto(6);
agregar(5, b); agregar(7, b); agregar(9, b); agregar(7, b);
agregar(5, a); agregar(8, a); agregar(7, a); agregar(3, a);
Iter i = newIter(b);
while(hasNext(i)) printf("\nelemento %d", next(i));
printf("\nb tiene %d elementos.", card(b));
escribeConjunto(b, "b");
Conjunto c = interset(a, b);
escribeConjunto(c, "c");
if(subseteq(c,b)) printf("\nc es subset b");
printf("\nMision cumPlida!!!\n");
return 0;
}
4. Complete las las siguientes funciones: En esta parte sólo puede usar las funciones del tipo vistas con
anterioridad y las del tipo iterador. No puede usar la representación interna del tipo. Tome como
referencia el ejemplo hecho en la función interset del ejercicio anterior.
///
int subseteq(Conjunto a, Conjunto b){
Iter i = newIter(a); int e;
while(hasNext(i)){
e = next(i);
///Completar...
}
return 1;
}
5. Librería Conjunto.h Forme una librería en la que coloque las funciones básicas del tipo conjunto y su
iterador.
Nota: Se recomienda seriamente que no se hagan cut and paste. Debe copiar su código para que
lo entienda mejor!!!