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: 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.
Tiempo de entrega: | 10 días |
|
|
Primera etapa: | 1 semana | ||
Modalidad: | En parejas |
Adolfo Di Mare <adolfo@di-mare.com>.
|