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

Tarea #3 [solución]

Números de longitud arbitraria

      Modifique la especificación e implementación de su respuesta para la pregunta del primer examen sobre números binarios enteros de longitud arbitraria y construya la clase MegaNum de números que tienen una representación en una base determinada por el programador cliente, de forma que su clase pueda ser usada en un programa similar al de la calculadora de la primera tarea programada.

      Su clase debe incluir los siguientes servicios:

MegaNum::Base()
Permite obtener y cambiar la base de representación usada para implementar la clase
MegaNum::Largo()
Para saber cuántos dígitos tiene el número (el cero tiene siempre un solo dígito).
MegaNum::Largo_Base()
Calcula cuántos dígitos se necesitan para representar el número en otra base.

      Implemente todas las operaciones aritméticas, salvo la división. Aunque una variable de tipo MegaNum sí debe tener signo, no tiene parte fraccionaria. Para hacer su trabajo básese en la clase rational descrita en este artículo:

Di Mare, Adolfo
"La Implementación de Rational.pas"; Reporte técnico ECCI-94-03; Proyecto 326-89-019; 1994.

      http://www.di-mare.com/adolfo/p/rational.htm
      http://www.di-mare.com/adolfo/p/src/rational.zip

      El rango de bases que usted debe permitir usar para representar internamente cada número es [2..255]. Para las bases más pequeñas, puede usar las letras del alfabeto para representar los dígitos superiores a 9 e inferiores a "z". Para las bases más grandes, use la convención Internet de separar cada dígito con un punto. Por ejemplo, el número 27 (base 10) se puede representar de todas estas maneras:

      Su clase MegaNum debe quedar implementada de dos formas diferentes, para que usted muestre de manera práctica que la misma interfaz (o especificación) puede servir para varias implementaciones diferentes. Usted debe ajustar el Rep de su clase para que le sea más cómodo escribir su implementación. Haga estas implementaciones:

      Muestre que su clase MegaNum funciona correctamente usando los programas de prueba para la calculadora de la primera tarea programada, los que puede obtener en esta dirección Internet:
      http://www.di-mare.com/adolfo/p/src/rational.zip

      Después de terminar su trabajo, instale la documentación en Internet como lo hizo en las tareas anteriores, y envíe su trabajo a los asistentes del curso por correo electrónico. No se olvide de entregar en clase la documentación impresa de su trabajo.

[mailto:] Kenneth Mora y Tomás Rodriguez

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

Soluciones

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