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

Tarea #5 [solución]

El vector asociativo implementado 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.

      Escriba un programa que sirva para contar la cantidad de veces que aparece cada palabra en un archivo de texto. Para eso, utilice la clase lista para implementar un vector asociativo usando como elemento de la lista parejas de valores, de la forma "<string, int>".

// Tdef.h        (C) 2004 adolfo@di-mare.com

#ifndef _Tdef_h
#define _Tdef_h

#include  "Astring.h"

typedef    Astring T1;
typedef    int     T2;

class pair {
public:
    T1 first; T2 second;
    pair() {}
    pair(const T1& a, const T2& b) first(a), second(b) {}
};

typedef    pair    T;          // simula plantillas

#endif

// EOF: Tdef.h

      Su trabajo consiste en especificar e implementar la clase "vector" usando la clase lista para que "vector" pueda ser un vector indexado por una hilera, que contiene un contador para cada palabra que aparece en el archivo de entrada.

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

    T2  &  operator[] (T1 &);  // V["banana"] = 3
    size_t Capacidad() const;
    size_t Dimension() const;

    class iterator { /* el iterador del vector*/ };
}; // 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. Note, eso sí, que en lugar de recibir un número entero como argumento, lo que recibe es una hilera, pues el tipo "T1" está definido con el typedef como "Astring".

      Para mostrar que su vector funciona tome el enunciado de esta tarea y déselo como entrada a su programa. Use su solución para la tarea anterior para implementar un método "Ordene()" que le permita imprimir en orden los valores de las palabras que ha detectado.

      No se complique. Asuma que una palabra es cualquier hilera que comienza con una letra o con un número. Apenas aparezca un caracter diferente, tome ese caracter como una palabra aparte. Por ejemplo, en la hilera "banana 123abc; 32=>145", las palabras son las siguientes:

  1. "banana"
  2. "123abc"
  3. ";"
  4. "32"
  5. "="
  6. ">"
  7. "145"

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

[mailto:] Entrega de Tareas

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

Soluciones

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