Llevo todo el dia con el ejercicio y no encuentro la forma.
Ahora mismo consigo tener el 1 15 y el 153 pero no encuentro la maldita forma de cuando salga 15 % 10, y cuando salga 153 % 100, sin utilizar un if,
Podeis darme un empujón o alguna idea de como hacerlo¿?
// 22. Un número entero de n dígitos se dice que es narcisista si se puede obtener como la suma de
// las potencias n-ésimas de cada uno de sus dígitos. Por ejemplo 153 y 8208 son números narcisistas
// porque 153 = 13 + 53 + 33 (153 tiene 3 dígitos) y 8208 = 84 + 24 + 04 + 84 (8208 tiene 4 dígitos).
// Construir un programa que, dado un número entero positivo, nos indique si el número es o no
// narcisista.
// Finalidad: Ejercitar los bucles. Dificultad Media.
#include <iostream>
#include <cmath>
using namespace std;
int main() {
// Variables y constantes
int numero_introducido = 0, numero_backup = 0, potencia = 0, resultado = 0, divisor = 100000, resultado_final = 0;
// Entrada del programa
do{
cout << "Introduce un numero: " << endl;
cin >> numero_introducido;
cin.clear();
}while(numero_introducido <= 0);
// Resolucion del programa
numero_backup = numero_introducido;
while(numero_backup != 0){
numero_backup /= 10;
potencia++;
}
numero_backup = numero_introducido;
while(numero_backup != 0){
resultado = numero_backup / divisor;
cout << resultado << endl;
if(resultado != 0 && resultado > 0){
resultado_final = resultado_final + pow(resultado, potencia);
}
divisor /= 10;
cout << resultado_final << endl;
}
return 0;
}
Nada conseguido después de toda la tarde mirando un código como lo hacia lo he conseguido entender: Paso código por si en un futuro alguien lo necesita como hoy yo.
// 22. Un número entero de n dígitos se dice que es narcisista si se puede obtener como la suma de
// las potencias n-ésimas de cada uno de sus dígitos. Por ejemplo 153 y 8208 son números narcisistas
// porque 153 = 13 + 53 + 33 (153 tiene 3 dígitos) y 8208 = 84 + 24 + 04 + 84 (8208 tiene 4 dígitos).
// Construir un programa que, dado un número entero positivo, nos indique si el número es o no
// narcisista.
// Finalidad: Ejercitar los bucles. Dificultad Media.
#include <iostream>
#include <cmath>
using namespace std;
int main() {
// Variables y constantes
int n, contador = 0, cn = 0, suma = 0, ultima_cifra = 0;
//Entrada del programa
do{
cout << "Introduce un numero: " << endl;
cin >> n;
}while(n <= 0);
// Desarrollo del programa
// Copia de n
cn = n;
// Saber el numero de cifras
while(n > 0){
n /= 10;
contador++;
}
// Volver a darle a n su valor incial
n = cn;
for(int i = 0; i < contador; i++){
ultima_cifra = n % 10;
suma = suma + pow(1.0*ultima_cifra, contador);
n /= 10;
}
n = cn;
if(suma == n){
cout << "El numero es narcisista" << endl;
}
else{
cout << "No es narcisista" << endl;
}
return 0;
}