Universidad de Costa Rica
Escuela de Ciencias de la Computación e Informática
CI-0202 Principios de informática - 2012c
Profesor Jeisson Hidalgo-Céspedes
Grupo 903:
El examen es de carácter práctico y puede realizarse en una computadora donde se tenga instalado el Java Development Kit (JDK). El estudiante puede consultar de cualquier recurso o referencia que guste, sean hechos durante el curso, estén publicados en libros o en la web. En caso de reutilizar código que haya trabajado con otros compañeros, debe informarlo al profesor al iniciar el examen. Se dispone de dos horas para entregar la prueba y debe realizarse en forma estrictamente individual. Para esta prueba en particular no se permite emplear las clases java.math.BigInteger
ni java.math.BigDecimal
.
En Java, el valor entero positivo más grande almacenable en un tipo de datos primitivo (long
) es 9,223,372,036,854,775,807
. Suponga que una entidad bancaria le ha contratado para implementar un sistema que debe manejar correctamente cifras macroeconómicas. Se necesita una clase en Java que represente números enteros positivos de cualquier cantidad de dígitos. En la fase inicial de este proyecto usted debe construir esta clase y poder leer, imprimir y hacer sumas de números muy grandes, es decir, su solución debe hacer funcionar el siguiente programa:
]]>
Entero
. Obtener código fuente.El programa anterior permite al usuario ingresar una cantidad n
de números enteros positivos de longitud arbitraria, y muestra el resultado de sumarlos. Los siguientes son ejemplos de ejecución de este programa.
Cantidad de enteros positivos a sumar: 2 Entero 1: 79905 Entero 2: 827 79905 827 +++++ 80732
Cantidad de enteros positivos a sumar: 3 Entero 1: 9223372036854775900 Entero 2: 10000000000000000000 Entero 3: 126456789 9223372036854775900 10000000000000000000 126456789 ++++++++++++++++++++ 19223372036981232689
Cantidad de enteros positivos a sumar: 4 Entero 1: 123456789012345678901234567890123456789 Entero 2: 10100100010001000010000010000 Entero 3: 987654321098765432109876543210987654321098765432109876543210 Entero 4: 13 123456789012345678901234567890123456789 10100100010001000010000010000 987654321098765432109876543210987654321098765432109876543210 13 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 987654321098765432110000000000010100100010001000010000010012
Entero
completa y correcta. Representa correctamente el número para que pueda crecer arbitrariamente. Hace adecuado manejo de miembros estáticos y no estáticos.leer()
: Lee correctamente enteros positivos de cualquier longitud del teclado (sugerencia: utilice el método next()
de la clase Scanner
). Retorna false
en caso de leer algo que no es un entero positivo válido.toString()
. Convierte el entero positivo en un String
.digitos()
retorna la cantidad de dígitos que componen al entero. Método digito(i)
retorna el i
-ésimo dígito del entero (contando de derecha a izquierda).e1.sumar(e2)
retorna un nuevo entero resultado de sumar el entero e1
con el entero e2
. Sugerencia: aproveche el método digito(i)
solicitado en el punto anterior.String
(método toString()
), de tal forma que hace la impresión del número más legible para el usuario.Para presentar su solución, suba su archivo Entero.java
a Mediación Virtual en la asignación con nombre Examen03
.