Necesito ayuda porque a la hora de realizar un programa que lea desde un archivo un numero y compruebe o no si la suma de cada digito elevado al numero total de digitos es igual al numero leido.
A continuacion dejo el codigo. Muchas gracias de antemano
Código
#include <iostream> #include <fstream> #include <cmath> #include <string> #include <iomanip> using namespace std; void explicacion(){ cout <<"Número Narcisista: Un número es narcisista cuando la suma de cada uno de sus digitos" <<endl; cout <<"elevado al numero de digitos del número da como resultado el mismo numero." <<endl; cout <<"Ejemplo: " <<endl; cout <<setw(10) <<"153 = 1³ + 5³ + 3³" <<endl; } bool es_noEs_narcisista(int num, int condicion){ return num == condicion; } int leerNumeros(int num){ ifstream datos; datos.open("datos.txt"); if (datos.is_open()){ datos >> num; while (!datos.fail()){ datos >> num; cout <<num <<endl; } } } int numDigitos(int num){ int nDigitos; nDigitos = 0; while (num != 0){ num = num / 10; nDigitos++; } return nDigitos; } int comprobacion(int num, int nDigitos){ int condicion, digitoI, digitosElevados; while (num != 0){ digitoI = num%10; digitosElevados = pow(digitoI, nDigitos); condicion = condicion + digitosElevados; num = num/10; } return condicion; } void mostrar(int num){ cout <<"El primer nº narcisista leido es el: " <<num <<endl; } int main (int argc, char** args){ int num, nDigitos, condicion; explicacion (); leerNumeros(num); nDigitos = numDigitos(num); condicion = comprobacion(num, nDigitos); mostrar (num); system ("pause"); return 0; }