Cátedra: Mandrafina
Fecha: Segundo Cuatrimestre 2004
Día: 24/02/2005
Describa diferencias conceptuales entre as variables puntero y el resto de las variables.
En un árbol B de orden m = 5 se insertan las claves 1,2,3,…, n.
(Cantidad máxima de claves por página: m - 1, Cantidad mínima de claves por página: m / 2)
Justificar.
Describa cuatro elementos escenciales en el diseño de un Tipo de Dato Abstracto.
Insertar las siguientes Claves en el orden indicado en un Árbol AVL.
( K, A, I, C, U, L, T, W, O, B )
Escribir la implementación de la primitiva
void eliminarArbol(ArbolBinario& arbol)
del TDA Árbol Binario en forma recursiva.
Escribir una función que determine si un Grafo dado es Orientado o no. (Para la implementación requerida un Grafo es No Orientado Si Existe una Arista (V,W) ⇔ (W,V)).
Explicar qué representa la referencia this en un método. Dar ejemplos.
Explique los conceptos de Redefinición y Polimorfismo. ¿Qué relación tienen entre ellos y con la Herencia?
Implementar las clases que modelen una Línea de Producción en una fábrica, cumpliendo las características enumeradas a continuación.
Una Línea de Producción consta de un conjunto de Procesos ordenados secuencialmente, por los que cada producto debe pasar. Cada Proceso está identificado por un nombre y posee una duración estimada [minutos]. Un Proceso sólo puede ser aplicado a un producto a la vez.
La clase Línea de Producción debe proveer métodos que permitan:
bool noOrientado(Grafo *unGrafo) { Vertice *verticeAProcesar; Arista *arista; Arista *aristaDelHijo; bool noOrientado; IteradorConjunto *itVertGraf = nuevoIterador(getConjuntoDeVertices(unGrafo)); verticeAProcesar = obtenerElemento(itVertGraf); while (!fin(itVertGraf) && noOrientado)) { IteradorConjunto *iteradorAristas = nuevoIterador(getAristasSalientes(vericeAProcesar)); while (!fin(iteradorAristas && noOrientaado)) { arista = obtenerElemento(iteradorAristas); IteradorConjunto *iteradorAristasDelHijo = nuevoIterador(getAristasSalientes(arista->verticeDestino)); noOrientado = false; while (!fin(iteradorAristasDelHijo) && !noOrientado) { aristaDelHijo = obtenerElemento(iteradorAristasDelHijo); if (aristaDelHijo->verticeDestino == verticeAProcesar && aristaDelHijo->info == arista->info) noOrientado = true; else irAlSiguiente(iteradorAristasDelHijo); } eliminarIterador(iteradorAristasDelHijo); irAlSiguiente(iteradorAristas); } eliminarIterador(iteradorAristas); irAlSiguiente(itVertGraf); } eliminarIterador(itVertGraf); return noOrientado; }