Vous êtes sur la page 1sur 6

Ejemplo 3.5.

10:
Lea un nmero y una base de un sistema de nuemeracin, y diga si el nmero
pertenece a ese sistema de numeracin, teniendo en cuenta que para que un
nmero pertenesca a un sistema de numeracin todos su digitos deben ser
menores que la base.

Solucin:

El sistema de numeracin que normalmente utilizamos, debido a su sencillez,


es el sistema decimal cuya base es 10. Sin embargo, cualquier nmero mayor
de 1, puede ser la base de un sistema de numeracin. De hecho son
importantes en computacin los sistemas de numeracin en base 2, 8 y 16.

Para decir que un nmero puede pertenecer a un sistema de numeracin, se


tendr que verificar que cada uno de sus dgitos sea menor que la base. Por
ejemplo en base 2 slo son vlidos los dgitos 0 y 1, en base 3 los dgitos 0, 1
y 2, ... , en base 10 los dgitos 0, 1, 2, 3, 4, 5, 6, 7, 8 y 9; mientras que en
sistemas de numeracin con bases mayores a 10 se utilizan las letras del
alfabeto, por ejemplo en base 16 son vlidos los dgitos 0, 1,2, 3, 4, 5, 6, 7, 8,
9, A, B, C, D y F. Esto restringir nuestro algoritmo, hasta comprender como
usar los caracteres y es por ello que nuestro programa solamente funcionar
cuando la base sea menor a 10.

Definicin de variables:

base: base del sistema numrico


num: nmero ingresado en base base
band: bandera. 1 indica que nmero no es correcto en esa base

Entonces, dado el nmero num y la base base, debemos encontrar cada dgito
de num. Si alguno de estos dgitos es mayor que base, entonces debemos
indicar que dicho nmero no es correcto activando la bandera haciendo band
=1 y, cuando terminemos de evaluar todos sus dgitos, preguntar si esa
bandera fue puesta a 1, en cuyo caso no ser un nmero vlido en dicho
sistema de numeracin.

Diagrama N/S
Leer base, num
band = 0
mientras ( num > 0 )
num MOD 10 >=base
V F
band = 1
num = num DIV 10
band == 1
V F
Imprimir Imprimir
"No es de esa base" "Es de esa base"

Ejemplo 3.5.11:
Lea un nmero entero en la base 10, yconviertalo a otra base menor que 10.
Solucin:

Se sabe que para convertir un nmero en base 10 (Sistema Decimal) a otra


base, debemos dividir sucesivamente el nmero entre la base, hasta encontrar
un cociente menor que dicha base (en algoritmos por computadora nos
conviene seguir la divisin hasta que el cociente sea cero). El nmero en la
nueva base estar formado por todos los residuos pero en orden inverso a como
se fueron obteniendo.

Por ejemplo sea el nmero 194 en base 10, al que deseamos convertir a base 5,
entonces:

194 5
(4) 38 5
(3) 7 5
(2) 1 5
(1) 0

194(10) = 1234 (5)

Los residuos escritos en el orden en que fueron obtenidos son: 4, 3,


2 y 1. Pero, el nmero equivalente a 194 en base 5 es 1234. Ntese la
necesidad de formar el nmero desde el ltimo residuo hasta el primero.

La restriccin que la base sea menor que 10, no afecta a este


algoritmo en su desarrollo manual. Sin embargo, en su implementacin
mediante computadoras debemos manejar adecuadamente los caracteres
para bases mayores que 10, lo cual no es considerado en esta parte, por
tratarse de un libro introductorio al mundo de la programacin y an no
trataremos sobre manipulacin de caracteres.
Definicin de variables:
n: nmero en base 10, adems es utilizado como el nmero en la nueva
base
base: base a la cual se quiere convertir n
inv: variable de trabajo que almacena los sucesivos residuos
obtenidos al realizar la conversin.

Nuestro algoritmo se basa en realizar divisiones sucesivas obteniendo el


residuo mediante n MOD base, y el cociente entero mediante n DIV base, e
ir formando el nmero a partir de los residuos. Sin embargo, el nmero
encontrado en realidad es el nmero pedido pero en orden inverso, por lo
tanto, se hace necesario escribir una pequea rutina que invierta dicho
nmero para tener el nmero deseado (ver ejemplo 4.7).

Diagrama N/S

Leer n, base
inv = 0
mientras ( n > 0 )
inv = 10*inv + n MOD base
n = n DIV base
mientras (inv > 0 )
n= 10*n+ inv MOD 10
inv = inv Dv 10
Imprimir n
Ejemplo 3.5.12:
Lea un nmero entero en una base menor que 10, y conviertalo a base 10.

Solucin:
Para convertir un nmero escrito en una base distinta a 10, debemos obtener sus dgitos y multiplicarlos por la base de
numeracin en que se encuentran pero elevada a la potencia segn su valor posicional disminuido en una unidad. Por ejemplo, para
convertir el nmero 1234(5) a su equivalente en base 10, haremos lo siguiente:

4(5) + 3(5)1 + 2(5)2 + 1(5)3 = 194(10)

Definicin de variables:

n: nmero en base base


base: base del nmero ingresado
nuevo: nmero en base 10
i: indica el exponente al que elevaremos base

Diagrama N/S

Leer n, base
i=0
nuevo = 0
mientras ( n > 0)
nuevo= nuevo + (n MOD 10) (base1)
n = n DIV 10
i = i+1
Imprimir
nuevo

Nuestro algoritmo leer el nmero n y la base base en la que est escrita, obteniendo sucesivamente cada uno de sus dgitos,
multiplicndolos por la potencia de la base adecuada, mientras que el nmero tenga dgitos (sea mayor a cero).

Ejemplo 3.5.13:
El mximo comn divisor (mcd) de un conjunto de nmeros es el mximo nmero que divide exactamente a todos ellos.
Encuentre el mcd de dos nmerospor el mtodo de Euclides.

Solucin:
Euclides ide un algoritmo para encontrar el mcd, de dos nmeros y consiste en dividir sucesivamente ambos nmeros
hasta que el divisor sea cero.

Suponga que se desea obtener el mcd de los nmeros 2363 y 2057, procederemos tal como se muestra:

1 6 1 2 1 1 2

2363 2057 306 221 85 51 34 17

306 221 85 51 34 17 0

Observe que en la parte superior aparecen los cocientes de las divisiones y en la parte inferior los restos, los cuales pasan
a formar el nuevo divisor mientras el resto sea mayor que cero. El mcd, ser el ltimo divisor, esto es 17.

Definicin de variables:
a : primer nmero (dividendo)
b: segundo nmero (divisor)
r: resto de la divisin entera

Diagrama N/S
Leer a, b
mientras (b>0)
r = a MOD b
a=b
b=r
Imprimir a