Numero narcisista

Iniciado por DamnSystem, 11 Noviembre 2017, 21:30 PM

0 Miembros y 1 Visitante están viendo este tema.

DamnSystem

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;
}
<3 Stay Hungry, Stay Foolish <3

DamnSystem

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;
}
<3 Stay Hungry, Stay Foolish <3