AYUDA, Leer desde un archivo

Iniciado por Kougami, 18 Diciembre 2016, 20:34 PM

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

Kougami

Buenas,
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 (cpp) [Seleccionar]
#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;
}