Universidad de Costa Rica
|
|
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.
Tiempo de entrega: | 7 días |
Modalidad: | En parejas |
Adolfo Di Mare <adolfo@di-mare.com>.
|