Sunteți pe pagina 1din 5

Taller de Ejercicios Numero 2 2018-2 Métodos Computacionales

Diego Edison Vargas Guerrero


diego.vargas-gu@mail.escuelaing.edu.co
Escuela Colombiana de Ingenierı́a Julio Garavito
Bogotá, Colombia
27 de Agosto 2018

1. Ejercicio numero 1 1.2. Método


Para lograr desarrollar el programa que permite con-
Describa un algoritmo y realice un programa para pa- vertir un numero binario a números en base 4 y base 8 se
sar de la representación en base 2 (binario) de un numero realiza bajo la siguiente metodologı́a:
entero a sus representaciones en las bases 4 y 8 (octal).
- Ingresar números enteros en base binaria.

- Transformar el numero binario de entrada a deci-


1.1. Descripción mal.

- Estando el numero inicial convertido en base 10, se


A continuación se describe en la metodologı́a las con- convierte este numero a la base 4 y a la base 8.
diciones de borde que se plantearon como base para la
construcción del algoritmo que se encarga de dar solu- - Se utilizan funciones para transformar para trans-
ción al requerimiento del enunciado de este problema. formar a las bases numéricas solicitadas.

1.3. Algoritmo

1 /∗
2 Programa que c o n v i e r t e un numero b i n a r i o a b a s e 4 y o c t a l
3 Fecha : 26/08/2018
4 Autor :
5 ∗/
6 // D e c l a r a c i o n de l a s l i b r e r i a s p r i n c i p a l e s d e l l e n g u a n j e c++
7 #include <i o s t r e a m >
8 #include <cmath>// l l a m a d a a l a l i b r e r i a de f u n c i o n e s matematicas
9 using namespace s t d ; // e s p a c i o de t r a b a j o para u t i l i z a r l a s f u n c i o n c i n y c o u t
10 void b a s e s ( int , i n t ) ; // d e c l a r a c i o n de l a f u n c i o n b a s e s que t r a n s f o r m a a b a s e 4 y o c t a l
11 i n t main ( )
12 {
13 /∗
14 La f u n c i o n p r i n c i p a l t i e n e por o b j e t i v o t r a n s f o r m a r de b i n a r i o a d e c i m a l
15 para l u e g o l l a m a r a l a f u n c i o n b a s e s para t r a n s f o r m a r a l s i s t e m a de numeracion 4 y o c t a l
16 ∗/
17 i n t exp , d i g i t o ;
18 double b i n a r i o , d e c i m a l ; // D e c l a r a c i o n de v a r i a b l e s
19 c o u t << ” I n t r o d u c e numero en b a s e 2 : ” ; // i n g r e s o d e l numero en b i n a r i o
20 c i n >> b i n a r i o ;
21 exp =0;
22 d e c i m a l =0; // i n i c i a l i z a c i o n de v a r i a b l e
23 while ( ( ( i n t ) ( b i n a r i o / 1 0 ) ) !=0) // E s t e c i c l o c o n t r o l a l a d e s c o m p o s i c i o n d e l numero b i n a r i o
24 {
25 d i g i t o = ( i n t ) b i n a r i o % 1 0 ; // s e o b t i e n e e l d i g i t o d e l b i n a r i o
26 d e c i m a l = d e c i m a l + d i g i t o ∗ pow ( 2 . 0 , exp ) ; // s e r e a l i z a l a p o t e n c i a c i o n por 2 d e l
d i g i t o b i n a r i o y s e almacena en d e c i m a l
27 exp++;// s e aumenta e l e x p o n e n t e
28 b i n a r i o =( i n t ) ( b i n a r i o / 1 0 ) ; // s e o b t i e n e un nuevo numero b i n a r i o mediante l a d i v i s i o n
para 10
29 }
30 d e c i m a l=d e c i m a l + b i n a r i o ∗ pow ( 2 . 0 , exp ) ; // s e o b t i e n e e l numero f i n a l t e n i e n d o en c u e n t a e l
cociente final
31 c o u t << e n d l << ” El numero en Decimal e s : ” << d e c i m a l << e n d l ; // s e p r e s e n t a e l numero d e c i m a l
32 c o u t <<” El numero en b a s e 4 e s : ” ;

1
33 b a s e s ( d e c i m a l , 4 ) ; // s e l l a m a a l a f u n c i o n b a s e con l o s p a r a m e t r o s d e l s i s t e m a de numeracion b a s e
4
34 c o u t <<e n d l ;
35 c o u t << ” El numero en b a s e 8 e s : ” ;
36 b a s e s ( d e c i m a l , 8 ) ; // s e l l a m a a l a f u n c i o n b a s e con l o s p a r a m e t r o s d e l s i s t e m a de numeracion
octal
37 c o u t <<e n d l ;
38 system ( ” pause ” ) ; // pausa para t e r m i n a r e l programa
39 }
40 /∗ Funcion b a s e s ∗/
41 /∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗
42 Esta f u n c i o n s i r v e para t r a n s f o r m a r un numero
43 d e c i m a l a o t r a b a s e numerica
44 e l parametro num o b t i e n e e l numero a t r a n s f o r m a r
45 e l parametro b a s e nos i n d i c a e l s i s t e m a de numeracion a t r a n s f o r m a r
46 ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗/
47 void b a s e s ( i n t num , i n t b a s e ) // d e s a r r o l l o de l a f u n c i o n b a s e s
48 {
49 i n t aux ; // v a r i a b l e que almacena e l r e s i d u o de l a d i v i s i o n e n t e r a
50
51 i f (num>=b a s e ) // s e c o n s u l t a s i e l numero e s s u p e r i o r o i g u a l a l a b a s e para s e g u i r r e a l i z a n d o
las operaciones
52 {
53 aux=num %b a s e ; // s e o b t i e n e e l r e s i d u o de l a d i v i s i o n e n t e r a e s e q u i v a l e n t e a mod
54 num=num/ b a s e ; // s e o b t i e n e e l c o c i e n t e de l a d i v i s i o n e n t e r a
55 b a s e s (num , b a s e ) ; // s e v u e l v e a l l a m a r a l a f u n c i o n r e a l i z a n d o r e c u r s i v i d a d
56 c o u t << aux ; // s e p r e s e n t a l o s r e s i d u o s de l a s o p e r a c i o n e s r e a l i z a d a s en orden i n v e r s a
57 } // f i n d e l i f
58 else
59 {
60 c o u t << num ; // s e p r e s e n t a e l c o c i e n t e r e s u l t a n t e de l a d i v i s i o n cuando no s e puede
ejecutar la condicion del i f
61 return ;
62 } // f i n d e l e l s e

2. Ejercicio numero 2 realiza bajo la siguiente metodologı́a:

Describa un algoritmo y realice un programa para pa-


sar de la representación en base 4 y 8 a binario. - Ingresar la opción que se quiere convertir sea nu-
mero de base 4 o de base 8.
2.1. Descripción
A continuación se describe en la metodologı́a las con- - Transformar el numero que se ingreso sea base 4 o
diciones de borde que se plantearon como base para la base 8 a binario a decimal.
construcción del algoritmo que se encarga de dar solu-
ción al requerimiento del enunciado de este problema. - Estando el numero inicial convertido en base 10, se
convierte este numero a un numero binario.
2.2. Método
Para lograr desarrollar el programa que permite con- - Se utilizan funciones para transformar a las bases
vertir un numero binario a números en base 4 y base 8 se numéricas solicitadas.

2.3. Algoritmo

1
2 #include <i o s t r e a m >// d e c l a r a c i o n de l i b r e r i a s
3 #include <cmath>// d e c l a r a c i o n de l a l i b r e r i a math para f u n c i o n e s matematicas
4 using namespace s t d ; // d e c l a r a c i o n de e s p a c i o de t r a b a j o
5 void b i n a r i o ( i n t ) ; // d e c l a r a c i o n de l a f u n c i o n b i n a r i o
6 double d e c i m a l ( double , i n t ) ; // d e c l a r a c i o n de l a f u n c i o n d e c i m a l
7 i n t main ( )
8 {
9 /∗
10 En e l programa p r i n c i p a l s e r e a l i z a un menu para que e l u s u a r i o s e l e c c i o n e s e n t r e 1 y 2
11 para d e t e r m i n a r que b a s e i n g r e s a y l u e g o s e r e a l i z a una l l a m a d a a l a f u n c i o n d e c i m a l para
convertir
12 e l numero a d e c i m a l y l u e g o t r a n s f o r m a r l o a b a s e b i n a r i a .
13
14 ∗/
15 double numero ;
16 i n t base , op ; // d e c l a r a c i o n de v a r i a b l e s

2
17 op = 0 ;
18 while ( op == 0 ) // e s t e c i c l o s i r v e para v a l i d a r l a o p c i o n e n t r e 1 y 2 para d e s i g n a r a que b a s e
pertenece 4 u 8
19 {
20 cout<< ” D i g i t e 1 para b a s e 4 ”<<e n d l ;
21 cout<< ” D i g i t e 2 para b a s e 8 ”<<e n d l ;
22 cout<< ” I n g r e s e o p c i o n : ” ;
23 c i n >>op ;
24 switch ( op ) // e v a l u a l a o p c i o n que e l u s u a r i o i n g r e s a
25 {
26 case 1 :
27 base = 4 ;
28 op = 1 ;
29 break ;
30 case 2 :
31 base = 8 ;
32 op = 2 ;
33 break ;
34 default :
35 cout<<”La o p c i o n i n g r e s a d a e s i n c o r r e c t a ”<<e n d l ;
36 op = 0 ;
37 break ;
38 }
39 }
40 cout<<” I n g r e s a e l numero en b a s e ”<<base<<” : ” ;
41 c i n >>numero ; // i n g r e s o de un numero en b a s e 4 o b a s e 8
42 numero= d e c i m a l ( numero , b a s e ) ; // l l a m a d a a l a f u n c i o n d e c i m a l que t r a n f o r m a un numero en b a s e 4
o base 8 a base decimal
43 c o u t << ” El numero en b i n a r i o e s : ” ;
44 b i n a r i o ( numero ) ; // l l a m a d a de l a f u n c i o n b i n a r i o que t r a n s f o r m a un numero d e c i m a l a b i n a r i o
45 cout<<e n d l ;
46 system ( ” pause ” ) ;
47 }
48 void b i n a r i o ( i n t num) // D e s a r r o l l o de l a f u n c i o n b i n a r i o que c o n v i e r t e un numero d e c i m a l a b i n a r i o
49 {
50 i n t aux ; // d e c l a r a c i o n de v a r i a b l e
51
52 i f (num==0) // s i e l numero e s i g u a l a c e r o s a l e de l a f u n c i o n
53 return ;
54
55 aux=num %2; // e x t r a e e l r e s i d u o de un d i v i s i o n e n t e r a
56 num=num / 2 ; // e x t r a e e l c o c i e n t e de una d i v i s i o n e n t e r a
57 b i n a r i o (num) ; // l l a m a o t r a v e z a l a f u n c i o n b i n a r i o a p l i c a n d o l a r e c u r s i v i d a d
58 // p r i n t f (” %d ” , aux ) ; // p r e s e n t a l o s v a l o r e s de l o s r e s i d u o s
59 c o u t << aux ;
60 } // f i n de l a f u n c i o n
61
62 double d e c i m a l ( double num , i n t b a s e ) // f u n c i o n que c o n v i e r t e un numero de b a s e 4 o de b a s e 8 a b a s e
decimal
63 {
64 i n t exp , d i g i t o ;
65 double d e c i m a l ; // D e c l a r a c i o n de v a r i a b l e s
66 exp =0;
67 d e c i m a l =0; // i n i c i a l i z a c i o n de v a r i a b l e
68 while ( ( ( i n t ) (num/ 1 0 ) ) !=0) // E s t e c i c l o c o n t r o l a l a d e s c o m p o s i c i o n d e l numero b a s e 4 u o c t a l
69 {
70 d i g i t o = ( i n t )num % 1 0 ; // s e o b t i e n e e l d i g i t o d e l b a s e 4 u o c t a l
71 d e c i m a l = d e c i m a l + d i g i t o ∗ pow ( base , exp ) ; // s e r e a l i z a l a p o t e n c i a c i o n por l a b a s e
s e a 4 u 8 y s e almacena en d e c i m a l
72 exp++;// s e aumenta e l e x p o n e n t e
73 num=( i n t ) (num/ 1 0 ) ; // s e o b t i e n e un nuevo numero de b a s e 4 o b a s e 8 mediante l a d i v i s i o n
para 10
74 }
75 d e c i m a l=d e c i m a l + num ∗ pow ( base , exp ) ; // s e o b t i e n e e l numero f i n a l t e n i e n d o en c u e n t a e l
cociente final
76 c o u t << e n d l << ” El numero en Decimal e s : ” << d e c i m a l << e n d l ; // s e p r e s e n t a e l numero d e c i m a l
77 return d e c i m a l ;
78 }

3. Ejercicio numero 3 3.1. Descripción

Para dar solución a este caso se debe tener en cuenta


Determinar el mayor y menor entero de una maquina la definición de numero entero la cual es:
de 8 bits, 16 bits, 32 bits y 64 bits, si se utiliza el primer Un número entero es un elemento del conjunto numéri-
bit para señalar el signo del numero. co que contiene los números naturales, sus opuestos y el

3
cero. 4. Ejercicio numero 4
3.2. Método Usando aritmética de cuatro dı́gitos (base 10), en-
cuentre aproximaciones de las raı́ces x1 y x2 de la ecua-
Como método para hallar respuestas se plantea: ción de segundo grado
- El cero solo debe estar contemplado en los números
positivos con el que no sea repetido en los números x2 − 200x + 1 = 0
negativos y se aproveche este bit como una posición
mas. Compruebe las aproximaciones encontradas reconstru-
yendo el polinomio de segundo grado a partir de
(x − x1 )(x − x2 ).
3.3. Resultados
- Para 8 Bits.
La primera posición es para el signo por tanto el 4.1. Descripción
rango de números enteros basados en los requeri-
Para el hallar los valores de aproximación de las raı́ces
mientos del programa son los siguientes:
se utilizaran las ecuaciones:
Numero entero mayor positivo. El máximo
valor positivo que puede tomar esta maquina de √
−b + b2 − 4ac
acuerdo a su caracterización es: x1 =
2a
(27 − 1) = 127

Numero entero menor negativo. El mı́nimo −b − b2 − 4ac
x2 =
valor negativo que puede tomar esta maquina de 2a
acuerdo a su caracterización es:
(27 ) = −128 4.2. Método

- Para 16 Bits. De acuerdo a lo mencionado en la descripción se pro-


cederá con determinar los valores de las constantes , los
Numero entero mayor positivo. El máximo cuales son: a = 1; b = −200; c = 1. con estos valores halla-
valor positivo que puede tomar esta maquina de remos los valores de x y x , los cuales serán remplazados
1 2
acuerdo a su caracterización es: en la solución del polinomio
(215 − 1) = 32767
Numero entero menor negativo. El mı́nimo 4.3. Resultados
valor negativo que puede tomar esta maquina de
acuerdo a su caracterización es: Se realizara solución numérica aplicando aritmética de
15 4 dı́gitos sin redondear, por tanto esta solución es cortan-
(2 ) = −32768
do los números en su dı́gito que corresponda al la posición
4.
- Para 32 Bits.
Numero entero mayor positivo. El máximo
valor positivo que puede tomar esta maquina de - Valor numérico de la raı́z.
acuerdo a su caracterización es:
A continuación se muestra ecuación con valores de
(231 − 1) = 2147483647 constantes en aritmética sin restricciones:
Numero entero menor negativo. El mı́nimo p p
valor negativo que puede tomar esta maquina de b2 − 4ac = (−200,0)2 − (4 ∗ 1 ∗ 1)
acuerdo a su caracterización es:
A continuación se muestra ecuación en su equivalente en
(231 ) = −2147483648 aritmética de 4 dı́gitos.
- Para 64 Bits. p
b2 − 4ac
Numero entero mayor positivo. El máximo
valor positivo que puede tomar esta maquina de p
acuerdo a su caracterización es: = (−0,02004 )2 − (0,00044 ∗ 0,00014 ∗ 0,00014 )

(263 − 1) = 922337203654775807 p
= (−0,02002 ∗ 108 ) − (0,0004 ∗ 0,0001 ∗ 0,0001)12
Numero entero menor negativo. El mı́nimo
valor negativo que puede tomar esta maquina de p
b2 − 4ac = 199, 9
acuerdo a su caracterización es:
(263 ) = −922337203654775808 - Solución de ecuación.

4
5.1. Numeral 5.1
200,0 + 199,9 Suponga que los numero de maquina decimales son
x1 =
0,00024 ∗ 0,00014 de la forma ±0.a1 a2 a3 a4 x10n con 0 ≤ ai ≤ 9, parai =
399, 9 1; 2; 3; 4, excepto a1 6== 0 y |n| ≤ 15. Cual es el mayor
x1 =
0,00024 valor de m en que el coeficiente binomio m k puede cal-
cularse para cualquier k por la definición, sin causar un
x1 = 199, 9
sobre flujo (desbordamiento)?
200,0 − 199,9
x2 =
0,00024
5.1.1. Descripción
0,00013
x2 = Se realiza identificación del numero que se quiere bus-
0,00024
car, el cual cuenta con la caracterı́stica de ser de cuatro
x2 = 0,05
posiciones después del cero y la primera posición nunca
(x − x1 )(x − x2 ) = (x − 199,9)(x − 0,05) puede tomar el valor de cero. por esta razón se realizaran
x2 − 0,05x − 199,9x + 1 = 0 diferentes interacciones que buscan cumplir con lo soli-
citado en el ejercicio, esta labor se realizara utilizando
x2 − 199,9x + 1 = 0 calculadora externa para validar resultados y verificación
De acuerdo a que b es un valor negativo se puede de condiciones de lo aquı́ solicitado.
usar la ecuación cuadrática racionalizada, esto permitirá
encontrar un valor mas preciso 5.1.2. Método
−2c Para desarrollo del ejercicio se desarrollan iteraciones
x1 = √
b+ b2 − 4ac variando el valor de m y el valor de k con el fin de sa-
−2,000 tisfacer la condición que indica que a cualquier valor de
x1 = k siendo máximo igual al valor de m no genere desbor-
−200,0 + 199,9
damiento en la maquina. Por esta razón me apoyo en
x1 = 20
calculadora de combinatoria para realizar las diferentes
−2c iteraciones con el fin de determinar el numero de maqui-
x2 = √
b − b2 − 4ac na y el valor del coeficiente binomial.
−2,000
x2 =
−200,0 − 199,9 5.1.3. Resultados
x2 = 0,0050
Teniendo en cuenta lo mencionado en el enunciado se
Por tanto la solución del polinomio se presenta a con- determina que:
tinuación con sus correspondientes aproximaciones:
m 16
 
(x − x1 )(x − x2 ) = (x − 199,9)(x − 0,005) k = 16

x2 − 0,005x − 199,9x + 1 = 0 Satisface la condición que a cualquier valor K no se


2
x − 199,9x + 1 = 0 desborda la maquina debido a que:

- El mayor numero de maquina se tiene cuando m =


5. Ejercicio numero 5 16 y k = 8, resultado que equivale a 12780, norma-
lizando este numero el resultado es 0,1278x105
El coeficiente binomial
describe varias formas de escoger un subconjunto de - Valor que satisface en cuanto a estructura de dı́gitos
k objetos a partir de un conjunto de m elementos. y valor de exponente.

S-ar putea să vă placă și