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

Tarea #5 [solución]

La matriz rala

      Se dice que una matriz es rala si la mayor parte de los valores que contiene son el mismo. Usualmente, el valor que más se repite es el "0" (cero), pero perfectamente podría ser otro. Tome la solución del primer examen en donde está la especificación y la implementación de la clase "Sparse_Matrix". Encontrará que varios de sus métodos no están correctamente implementados, pues la clase "Sparse_Matrix" fue obtenida modificando el código fuente de la clase "Matrix" chirrisquitica[*], siguiendo estos pasos:

  1. Copie el contenido del archivo "Matrix.h" en el archivo "Sparse_Matrix.h".
  2. Usando el editor de textos, sustituya el identificador "Matrix" por "Sparse_Matrix".
  3. Cámbiele el Rep a la clase "Sparse_Matrix.h".
  4. Recompile y arregle el programa para que funcione con el nuevo Rep para la clase "Sparse_Matrix".

      El nuevo Rep para "Sparse_Matrix" por lo menos incluye 3 vectores paralelos (recuerde que el modelo de la clase generalmente está en la especificación del "check_ok()" para la clase):

template <class E>
class Sparse_Matrix {
     unsigned * m_I; ///< Indice "i" de \c M(i,j)
     unsigned * m_J; ///< Indice "j" de \c M(i,j)
     E      * m_val; ///< Valor para \c M(i,j)
};

      Pese a que el programa de la tarea programada anterior funciona correctamente con esta nueva versión de la clase matriz, no todos los métodos estarán correctamente implementados pues el compilador C++ no compila una plantilla a menos que necesita usarla. Por eso, las operaciones "Move()", "Swap()", y otras más, de "Sparse_Matrix" son incorrectas. Usted debe corregirlas y hacer los datos de los datos de prueba para todas ellas.

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

[mailto:] Entrega de Tareas

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

Soluciones

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