Introducción
En este laboratorio, aprenderemos a comprobar si un número dado es un número de Armstrong utilizando un programa en C. Primero, leeremos un entero como entrada del usuario, luego calcularemos la suma de cada dígito elevado a la potencia del número total de dígitos y, finalmente, imprimiremos si el número es un número de Armstrong o no.
El programa guiará al usuario a través del proceso paso a paso, desde la lectura de la entrada hasta la determinación de si el número es un número de Armstrong.
Leer un Entero
En este paso, aprenderemos a leer una entrada de entero del usuario en un programa C para comprobar si es un número de Armstrong.
Primero, creemos un nuevo archivo C en el directorio del proyecto:
cd ~/project
nano armstrong.c
Ahora, escribamos el código inicial para leer un entero:
#include <stdio.h>
int main() {
int number;
// Solicita al usuario que introduzca un número
printf("Introduce un número para comprobar si es un número de Armstrong: ");
// Lee la entrada de entero
scanf("%d", &number);
// Imprime el número introducido para verificar la entrada
printf("Has introducido: %d\n", number);
return 0;
}
Compila y ejecuta el programa:
gcc armstrong.c -o armstrong
./armstrong
Salida de ejemplo:
Introduce un número para comprobar si es un número de Armstrong: 153
Has introducido: 153
Desglose del código:
scanf("%d", &number)lee un entero de la entrada del usuario.&numberpasa la dirección de memoria de la variablenumber.printf()se utiliza para solicitar al usuario e imprimir el número introducido.
Calcular la Suma de Cada Dígito Elevado a la Potencia del Número de Dígitos
En este paso, modificaremos nuestro programa anterior para calcular la suma de cada dígito elevado a la potencia del número total de dígitos.
Abre el archivo armstrong.c:
cd ~/project
nano armstrong.c
Actualiza el código para calcular la suma de los dígitos:
#include <stdio.h>
#include <math.h>
int main() {
int number, originalNumber, remainder, digitCount = 0;
long long digitSum = 0;
// Solicita al usuario que introduzca un número
printf("Introduce un número para comprobar si es un número de Armstrong: ");
scanf("%d", &number);
// Almacena el número original para comparaciones posteriores
originalNumber = number;
// Cuenta el número de dígitos
while (number != 0) {
number /= 10;
digitCount++;
}
// Restablece el número al valor original
number = originalNumber;
// Calcula la suma de cada dígito elevado a la potencia del número de dígitos
while (number != 0) {
remainder = number % 10;
digitSum += pow(remainder, digitCount);
number /= 10;
}
// Imprime los resultados
printf("Número de dígitos: %d\n", digitCount);
printf("Suma de los dígitos elevados a la potencia: %lld\n", digitSum);
return 0;
}
Compila el programa con la biblioteca matemática:
gcc armstrong.c -o armstrong -lm
./armstrong
Salida de ejemplo:
Introduce un número para comprobar si es un número de Armstrong: 153
Número de dígitos: 3
Suma de los dígitos elevados a la potencia: 153
Conceptos clave explicados:
digitCountcuenta el número de dígitos.pow(remainder, digitCount)eleva cada dígito a la potencia del número total de dígitos.number % 10extrae el último dígito.number /= 10elimina el último dígito en cada iteración.long longse utiliza para manejar sumas de dígitos potencialmente grandes.
Imprimir si es o no un Número de Armstrong
En este paso, completaremos nuestro comprobador de números de Armstrong comparando el número original con la suma de dígitos calculada.
Abre el archivo armstrong.c:
cd ~/project
nano armstrong.c
Actualiza el código para determinar e imprimir si el número es un número de Armstrong:
#include <stdio.h>
#include <math.h>
int main() {
int number, originalNumber, remainder, digitCount = 0;
long long digitSum = 0;
// Solicita al usuario que introduzca un número
printf("Introduce un número para comprobar si es un número de Armstrong: ");
scanf("%d", &number);
// Almacena el número original para comparaciones posteriores
originalNumber = number;
// Cuenta el número de dígitos
while (number != 0) {
number /= 10;
digitCount++;
}
// Restablece el número al valor original
number = originalNumber;
// Calcula la suma de cada dígito elevado a la potencia del número de dígitos
while (number != 0) {
remainder = number % 10;
digitSum += pow(remainder, digitCount);
number /= 10;
}
// Comprueba si el número es un número de Armstrong
if (digitSum == originalNumber) {
printf("%d es un número de Armstrong.\n", originalNumber);
} else {
printf("%d no es un número de Armstrong.\n", originalNumber);
}
return 0;
}
Compila el programa:
gcc armstrong.c -o armstrong -lm
./armstrong
Ejemplos de salida:
Introduce un número para comprobar si es un número de Armstrong: 153
153 es un número de Armstrong.
Introduce un número para comprobar si es un número de Armstrong: 154
154 no es un número de Armstrong.
Conceptos clave explicados:
- Compara
digitSumconoriginalNumber. - Si son iguales, es un número de Armstrong.
- El programa maneja diferentes escenarios de entrada.
Resumen
En este laboratorio, aprenderás a leer un entero introducido por el usuario, calcular la suma de cada dígito elevado a la potencia del número total de dígitos y determinar si el número es un número de Armstrong. El primer paso implica solicitar al usuario que introduzca un número y almacenarlo en una variable. El segundo paso se centra en calcular la suma de cada dígito elevado a la potencia del número total de dígitos, que luego se compara con el número original para comprobar si es un número de Armstrong.



