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

Tarea #3 [solución]

Clase vector extendible

      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:
    typedef unsigned size_type;
public:
    vector(size_type n); // Contructor
    vector();            // Contructor por defecto (de vector)
    ~vector();           // Destructor

    void push_back ( T ); // Agrega un valor al final
    void push_front( T ); // Agrega un valor al principio

    void pop_front(); // Elimina el valor del final
    void pop_back();  // Elimina el valor del principio

    T &  operator[] (size_type);  // V[i]

    /// Retorna la cantidad máxima de valores que puede almacenar el vector.
    size_type capacity() const;
    /// Retorna la cantidad de valores almacenados el vector.
    size_type size() const;
}; // vector

      En la clase vector lo más importante es el método "vector::operator[](i)" 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.

      En su implementación debe usar un vector circular que permita implementar las operaciones de inserción y borrado eficientemente.

      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.

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

[mailto:] Entrega de Tareas

Tiempo de entrega: 7 días
Modalidad: En parejas

Soluciones

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