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

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 <iostream>
 
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 <iostream>
#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 <<std::endl;
    }
    delete miNumero;
    delete otroNumero;
    delete otroNumeroMas;
    delete miPila;
    return 0;
}

Discusión

Si ves algo que te parece incorrecto en la resolución y no te animás a cambiarlo, dejá tu comentario acá.
materias/75/41/final_mandrafina_2006xxxx_1.txt · Última modificación: 2007/02/06 10:55 por mariano
 
Excepto donde se indique lo contrario, el contenido de esta wiki se autoriza bajo la siguiente licencia: CC Attribution-Noncommercial-Share Alike 3.0 Unported


Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki