====== Examen Final - 75.41. Algoritmos y Programación II====== **Cátedra:** Mandrafina\\ **Fecha:** Ejercicios varios de Final - Primer Cuatrimestre 2006\\ **Día:** alguno de 2006 Esta página está incompleta; podés ayudar completando el material. ===== Enunciado ===== ==== Punto I ==== Diseñar e implementar (con POO) una pila ==== Punto II ==== Diseñar ( diagrama de clases) y codificar la interfaz en lenguaje C++. **Profesor:** tiene por lo minimo nombre, apellido, DNI. Tambien dispone de antiguedad, puede ejercer como máximo en 5 cátedras, pudiendo ser establecidas y consultadas todas ellas. **No docente:** tiene por lo minimo nombre, apellido, DNI. Tambien dispone de antiguedad, horario de entrada, horario de salida, pudiendo ser establecidas y consultadas todas ellas. ===== Resolución ===== ==== Punto I ==== {{:materias:75:41:diadeclasepila.png|:materias:75:41:diadeclasepila.png}} Primero definimos el nodo: //nodose.cpp #include "nodose.h" nodo::nodo(void* dato){ this->dato = dato; this->siguiente = 0; } nodo::~nodo(){ this->dato = 0; this->siguiente = 0; } void nodo::setSiguiente(nodo* siguiente){ this->siguiente = siguiente; } nodo* nodo::getSiguiente(){ return this->siguiente; } void nodo::setDato(void* dato){ this->dato = dato; } void* nodo::getDato(){ return this->dato; } Luego la pila en sí: //pila.cpp #include "pila.h" #include pila::pila() { this->top = 0; } pila::~pila() { while (!this->vacia()){ this->desapilar(); } } bool pila::vacia() { return (this->top == 0); } void pila::apilar(void* dato) { nodo* nuevo = new nodo(dato); nuevo->setSiguiente(this->top); this->top = nuevo; } void* pila::desapilar() { void* dato; nodo* nuevoTop; dato = this->top->getDato(); nuevoTop = this->top->getSiguiente(); delete (this->top); this->top = nuevoTop; return dato; } Y para probar que esto anda, podemos usar: #include #include "pila.h" int main() { std::cout << "Prueba de mi pila" << std::endl; pila* miPila = new pila(); int* miNumero = new int; int* otroNumero = new int; int* otroNumeroMas = new int; int* respuesta; *miNumero = 2; miPila->apilar((void*)miNumero); *otroNumero = 3; miPila->apilar((void*)otroNumero); *otroNumeroMas = 10; miPila->apilar((void*)otroNumeroMas); while (!miPila->vacia()) { respuesta = (int*)miPila->desapilar(); std::cout << *respuesta < ===== Discusión ===== Si ves algo que te parece incorrecto en la resolución y no te animás a cambiarlo, dejá tu comentario acá.