Universidad de Costa Rica
|
|
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()
MegaNum::Largo()
MegaNum::Largo_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:
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:
10
:
2710
= 27
= 2.7
8
:
2710
=
338
=
3.38
16
:
2710
=
1b16
=
1.1116
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.
Kenneth Mora y Tomás Rodriguez
|
Adolfo Di Mare <adolfo@di-mare.com>.
|