Está en la página 1de 2

UNIVERSIDAD NACIONAL DE INGENIERA

Facultad de Ingeniera Industrial y de Sistemas


ST202W - Lenguaje de Programacin Estructurado
Prctica Calificada #4
(4 puntos) P1 - Unin de reas
Desarrolle un programa que lea dos crculos (x1, y1, r1), (x2, y2, r2) y calcule el rea de la
unin de ambos. Escriba todos sus clculos en el cuadernillo.

Input 1
005
12 0 10
Output 1
375.689282

Input 2
005
0 0 10
Output 2
314.159265

Input 3
005
20 0 10
Output 3
392.699082

(8 puntos) P2 - Nmeros Gigantes


En C++, ningn tipo de dato primitivo puede almacenar con precisin enteros de ms de
20 dgitos. Cuando se necesita trabajar con nmeros muy grandes, es comn
representarlos internamente como cadenas e implementar funciones aritmticas (o utilizar
algunas libreras especiales).
Desarrolle un programa que permita hacer operaciones con nmeros gigantes.
a. Defina una estructura que permita almacenar nmeros con una cantidad arbitraria de
dgitos. Internamente utilice arreglos dinmicos, listas, pilas o colas para almacenar
los dgitos.
b. Implemente las siguientes funciones aritmticas y demuestre su uso en el programa
principal.
// Crear un NumeroGigante a partir de un numero de 64 bits
NumeroGigante convertir(long long N);
// Calcular la suma de dos NumeroGigante
NumeroGigante sumar(NumeroGigante A, NumeroGigante B);
// Calcular el producto de dos NumeroGigante
NumeroGigante multiplicar(NumeroGigante A, NumeroGigante B);
// Imprimir en pantalla un NumeroGigante
void imprimir(NumeroGigante X);

UNIVERSIDAD NACIONAL DE INGENIERA


Facultad de Ingeniera Industrial y de Sistemas
(4 puntos) P3 Nmeros Racionales
Algunos nmeros racionales como 1/7, o 1/9, no pueden ser almacenados con precisin
en tipos primitivos reales de C++. Cuando se desea trabajar con exactitud con nmeros
racionales, es necesario implementar funciones manualmente o utilizar algunas libreras
especiales.
Desarrolle un programa que permita hacer operaciones con nmeros racionales cuyos
numeradores y denominadores sean arbitrariamente grandes (nmeros gigantes).
c. Defina una estructura que permita almacenar nmeros racionales, almacenando el
numerador y denominador, ambos con una cantidad arbitraria de dgitos.
Internamente utilice arreglos dinmicos, listas, pilas o colas para almacenar los
dgitos.
d. Implemente las siguientes funciones aritmticas y demuestre su uso en el programa
principal.
// Crear un NumeroRacional a partir dos numeros de 64 bits
NumeroRacional convertir(long long numerador, long long denominador);
// Crear un NumeroRacional a partir dos NumeroGigante
NumeroRacional convertir(NumeroGigante numerador,
denominador);

NumeroGigante

// Calcular la suma de dos NumeroRacional


NumeroRacional sumar(NumeroRacional A, NumeroRacional B);
// Calcular el producto de dos NumeroRacional
NumeroRacional multiplicar(NumeroRacional A, NumeroRacional B);
// Imprimir en pantalla un NumeroRacional
void imprimir(NumeroRacional X);
(2 puntos) P4 - MCD Gigante (Bonus)
Implemente el algoritmo de Euclides para nmeros gigantes (necesitar tambin
implementar la operacin de sustraccin) y modifique el programa P3 para mantener
fracciones irreductibles.

RPR 2016-1

Lima, 2 de julio de 2016

También podría gustarte