0% encontró este documento útil (0 votos)
47 vistas6 páginas

Ejemplo 4.4

El documento explica el concepto de número de Armstrong, que es un número cuya suma de sus cifras elevadas a la potencia de la cantidad de dígitos es igual al propio número. Se presenta un algoritmo para determinar si un número entero positivo es un número de Armstrong, incluyendo un análisis del problema y un pseudocódigo. Además, se incluyen diagramas de flujo que ilustran el proceso de cálculo y decisión.

Cargado por

Abel
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
47 vistas6 páginas

Ejemplo 4.4

El documento explica el concepto de número de Armstrong, que es un número cuya suma de sus cifras elevadas a la potencia de la cantidad de dígitos es igual al propio número. Se presenta un algoritmo para determinar si un número entero positivo es un número de Armstrong, incluyendo un análisis del problema y un pseudocódigo. Además, se incluyen diagramas de flujo que ilustran el proceso de cálculo y decisión.

Cargado por

Abel
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Introducción a la Lógica de Programación 207

.:Ejemplo 4.4. Dentro del contexto de las matemáticas recreativas3 se


encuentra el concepto de número de Armstrong, también conocido como
número narcisista; definido como aquel en que la suma de cada una de sus
cifras elevadas a la potencia n es igual a él mismo, donde n está dada por
la cantidad de cifras o dı́gitos del número.
Por ejemplo, el número 407, que posee 3 cifras, es un Armstrong dado
que:
43 + 03 + 73 = 64 + 0 + 343 = 407

Son también números de Armstrong los siguientes: 1, 2, 3, 4, 5, 6, 7,


8, 9, 153, 370, 371, 407, 1634, 8208, 9474, 54748, 92727, 93084, 548834,
1741725, entre otros
De acuerdo al anterior contexto, construya un algoritmo que reciba un
número entero positivo en base 10 y determine si es o no un número de
Armstrong.

Análisis del problema:

Resultados esperados: mensaje que informe si el número ingresado


es o no un Armstrong.
Datos disponibles: un número entero positivo en base 10.
Proceso: la solución de este problema se puede realizar con los
siguientes pasos:

• Leer un número entero positivo.


• Determinar el número de cifras o dı́gitos de ese número. Para
ello se usa el procedimiento explicado en el Ejemplo 4.34 .
• Calcular la sumatoria de sus dı́gitos elevados a la potencia n,
donde n estará determinada por el número de cifras resultantes
del proceso anterior.
• Tomar una decisión que determine si el número leı́do es igual a
la sumatoria mencionada en el paso anterior (Ver Figura 4.9).

3
Estudio y solución por puro pasatiempo de problemas y acertijos relacionados con
las matemáticas [Bishop et al., 2004].
4
Se recomienda leer el análisis de dicho ejemplo.
208 Estructuras de repetición

¿numero = sumatoria?

sı́ no

Es un número de Armstrong No es un número de Armstrong

Figura 4.9: Árbol de decisión del Ejemplo 4.4

Variables requeridas:

• numero: almacenará el valor proporcionado por el usuario del


algoritmo.
• copiaNumero: en esta variable se hará copia del valor original
del número y con ella se efectuarán los cálculos necesarios para
la separación de las cifras; ası́ se podrá conservar el contenido
original en la variable numero.
• contadorCifras: contará el número de dı́gitos que tiene el
número, a la vez será utilizada como el valor de la potencia (n)
a la que se eleva cada uno de los dı́gitos.
• cifra: se utilizará para ir almacenando las cifras o dı́gitos que
se separen del número.
• sumaCifras: en ella se calculará la sumatoria de las cifras
elevadas a la potencia n (contadorCifras).

En las Figuras 4.10 y 4.11 se muestra la solución del Ejemplo 4.4


mediante un diagrama de flujo.
Debido a que la solución es un poco extensa, fue necesario dividir el
diagrama en dos páginas, observe que para poder seguir el flujo se utilizó
un conector a otra página.

Buena práctica:
Cuando los diagramas son muy extensos, se deben
dividir en varias partes, las cuales se enlazan con
conectores a la misma página o con conectores a otra
página.
Introducción a la Lógica de Programación 209

Inicio

numero

copiaNumero = numero

contadorCifras = 0

No
copiaNumero > 0

Sı́

cifra = copiaNumero % 10

copiaNumero = copiaNumero / 10

contadorCifras = contadorCifras + 1

Figura 4.10: Diagrama del flujo del Algoritmo Armstrong - Parte 1


210 Estructuras de repetición

sumaCifras = 0

copiaNumero = numero

No
copiaNumero > 0

Sı́

cifra = copiaNumero % 10

copiaNumero = copiaNumero / 10

sumaCifras = sumaCifras
+ cifraˆ contadorCifras

Sı́ numero == No
sumaCifras

numero,“es un número numero, “no es un


de Armstrong” número de Armstrong”

Final

Figura 4.11: Diagrama del flujo del Algoritmo Armstrong - Parte 2


Introducción a la Lógica de Programación 211

A continuación se muestra la solución a través de pseudocódigo


(Algoritmo 4.7).

Algoritmo 4.7: Armstrong


1 Algoritmo Armstrong
2 /* Recibe un número entero positivo y determina si es
3 o no un número de Armstrong.
4 * /
5 // Declaración de variables
6 Entero numero, copiaNumero, contadorCifras, cifra,
7 sumaCifras
8
9 // Lectura del dato disponible
10 imprimir( "Escriba el número a analizar: " )
11 leer( numero )
12
13 // Inicialización de variables
14 // Se cuenta el número de cifras del número
15 contadorCifras = 0
16 copiaNumero = numero
17 Mientras( copiaNumero > 0 )
18 cifra = copiaNumero % 10
19 copiaNumero = copiaNumero / 10
20 contadorCifras = contadorCifras + 1
21 FinMientras
22

23 // Se calcula la sumatoria de sus dı́gitos


24 // elevados a la potencia n (contadorCifras)
25 sumaCifras = 0
26 copiaNumero = numero
27 Mientras( copiaNumero > 0 )
28 cifra = copiaNumero % 10
29 copiaNumero = copiaNumero / 10
30 sumaCifras = sumaCifras + cifra ˆ contadorCifras
31 FinMientras
32
33 // Resultado esperado
34 Si( numero == sumaCifras ) Entonces
35 imprimir( numero, "es un número de Armstrong." )
36 SiNo
37 imprimir( numero, " no es un número de Armstrong." )
38 FinSi
39 FinAlgoritmo
212 Estructuras de repetición

Al ejecutar el algoritmo:
Primera ejecución:
Escriba el número a analizar: 1634

1634 es un número de Armstrong.

Segunda ejecución:
Escriba el número a analizar: 14321

14321 no es un número de Armstrong.

Explicación del algoritmo:


En esta solución se utilizan dos estructuras repetitivas Mientras-
FinMientras independientes. Cuando se habla de estructuras
independientes, se quiere decir que primero se ejecuta una completamente
y luego se procede de igual manera con la siguiente.
La primera estructura repetitiva en esta solución, tiene la función
de contar el número de cifras o dı́gitos que conforman al número que
proporcione el usuario, de esta manera se determina el valor de la potencia
(contadorCifras) a la cual se deben elevar cada uno de los dı́gitos.
Para ello se usó el mismo procedimiento explicado en el Ejemplo 4.3.
La segunda instrucción Mientras-FinMientras del algoritmo,
calcula la sumatoria de los dı́gitos elevados a la potencia n
(contadorCifras).
Luego de que se ejecuten los dos ciclos, se encuentra una estructura de
decisión Si-FinSi independiente a ellos, cuya función es determinar si el
número suministrado es o no un Armstrong.
Una caracterı́stica a destacar en esta solución, es que las dos estructuras
repetitivas Mientras-FinMientras tienen instrucciones similares, en
ambas se hace la separación de las cifras.

También podría gustarte