Universidad de Costa Rica
Escuela de Ciencias de la
Computación e Informática
Profesor Adolfo Di Mare
CI-1201
I Semestre 2005
[<=] [home] [<>] [\/] [=>]
CI-1201 Programación II

Tarea #4 [solución]

Clase vector implementada con base en la clase lista

      El objetivo de esta tarea programada es que usted diseñe e implemente una clase completa, junto con sus programas de prueba.

      Uno de los problemas que el lenguaje C++ tiene es que no permite usar vectores y matrices de tamaño variable, pues las dimensiones de todos los arreglos deben ser definidos en tiempo de compilación. Para remediar esta carencia, C++ le ofrece al programador la posibilidad de usar sobrecarga de operadores para simular el uso de vectores sobre estructuras de datos más sofisticadas, como la lista.

      Su trabajo consiste en especificar e implementar la clase "vector" usando la clase lista para que "vector" pueda ser un vector de tamaño variable aunque para el programador cliente parezca un arreglo C++.

class vector {
public:
    vector(size_t n);  // Contructor
    vector();          // Contructor por defecto (de vector)
    ~vector();         // Destructor

    void  Agregar_Final    (size_t); // Agregar elementos al Final
    void  Agregar_Principio(size_t); // Agregar elementos al principio

    void  Eliminar_Final    (size_t); // Eliminar elementos al Final
    void  Eliminar_Principio(size_t); // Eliminar elementos al principio 

    T &    operator[] (size_t);       // V[i]
    size_t Capacidad() const;
    size_t Dimension() const;
}; // vector

      En la clase vector lo más importante es el método e "vector::operator[]()" que se encarga de retornar una referencia al i-ésimo componente del vector. Los otros métodos sirven para hacer que crezca o disminuya de tamaño el vector.

      Para mostrar que su vector funciona, use la función "rand()" para generar varias secuencias de al menos 1,000,000 de números y luego aplíqueles el algoritmo "qsort()" para ordenarlos. También, en el programa que hizo como solución para la tarea programada anterior, sustituya el uso de un arreglo C++ por su clase "vector" con el fin de mostrar que esta abstracción le permite cambiar la implementación con gran facilidad.

      Entregue su tarea por correo electrónico, como lo hizo anteriormente.

[mailto:] Entrega de Tareas

Tiempo de entrega: 10 días
Entregue su documentación en la primera fecha, y luego entregue el programa completo en la segunda fecha.
Primera etapa: 1 semana
Modalidad: En parejas

Soluciones

[mailto:] Adolfo Di Mare <adolfo@di-mare.com>.
Copyright © 2005
Derechos de autor reservados © 2005
[home] <> [/\]