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

Tarea #6 [solución]

La Lista Parametrizable

      En esta tarea su trabajo consiste en retomar la implementación de las clases "list" y "poly" que usted programó en las tareas anteriores (#4 y #5), para implementarlas de nuevo pero usando plantillas.

      El cambio fundamental que tiene que realizar es sustituir el archivo de encabezado "elem.h" por el argumento de plantilla "template class <E>":

/* list.h   © YOYO.viejo.com */

#ifndef list_h
#define list_h

#include "elem.h"

class list {
    class node {
        node   *next;
        elem_t  v; // valor
    };

    node * _last;
    // ...
};
#endif // list_h
/* list.h   © YOYO.nuevo.com */

#ifndef list_h
#define list_h

// ELIMINADO: #include "elem.h"

template <class E> class list{
    class node {
        node   *next;
        E       v; // valor "<E>"
    };

   node * _last;
   // ...
};
#endif // list_h

      Cuando usa plantillas, el programador cliente debe instanciarlas, usando un tipo de datos en el argumento paramétrico "<E>". En la implementación del polinomio "poly" hay que usar la clase "term" de pares (coef, deg) para almacenar en una lista los monomios que conforman el polinomio:

/* elem.h   © YOYO.viejo.com */

#ifndef elem_h
#define elem_h

class elem_t {  // nombre feo
    unsigned  deg;
    float     coef;
    // ...
};
#endif // elem_h
Sobra   elem.h
/* poly.h   © YOYO.viejo.com */

#ifndef poly_h
#define poly_h

#include "elem.h"
#include "list.h"

class poly {
    list LC;
    // ...
};
#endif // poly_h

/* poly.h   © YOYO.nuevo.com */

#ifndef poly_h
#define poly_h


#include "list.h"

class poly {
     class term {
         unsigned  deg;
         float     coef;
         // ...
     };
    list<term> LC; // Lista de "term"
    // ...
};
#endif // poly_h

      Luego de imprimir la documentación de su programa, y entregarla en clase, envíe su trabajo a los asistentes del curso por correo electrónico. Para esto, haga un archivo empacado .zip cuyo nombre sea su número de carnet. Incluya en ese archivo lo siguiente:

  1. Un documento en formato HTML que describa el trabajo que realizó. Incluya el nombre del compilador que usó.
  2. El código fuente de su programa.
  3. El código ejecutable de su programa.
  4. Un programa de prueba suficientemente exahustivo.

      Después de la fecha de entrega del programa, puede usted instalar en su cuenta personal su solución (no instale antes su solución en Internet, pues en ese caso sería usted culpable de facilitar la copia de su trabajo, y en consecuencia se haría acreedor a la sanción respectiva).

[mailto:] Hilda Pineda y Mario Tenorio

Tiempo de entrega: 7 días
Modalidad: Individual

Soluciones

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