Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Kougami en 18 Diciembre 2016, 20:34 pm



Título: AYUDA, Leer desde un archivo
Publicado por: Kougami en 18 Diciembre 2016, 20:34 pm
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
  1. #include <iostream>
  2. #include <fstream>
  3. #include <cmath>
  4. #include <string>
  5. #include <iomanip>
  6. using namespace std;
  7.  
  8. void explicacion(){
  9. cout <<"Número Narcisista: Un número es narcisista cuando la suma de cada uno de sus digitos" <<endl;
  10. cout <<"elevado al numero de digitos del número da como resultado el mismo numero." <<endl;
  11. cout <<"Ejemplo: " <<endl;
  12. cout <<setw(10) <<"153 = 1³ + 5³ + 3³" <<endl;
  13. }
  14.  
  15.  
  16. bool es_noEs_narcisista(int num, int condicion){
  17. return num == condicion;
  18. }
  19.  
  20. int leerNumeros(int num){
  21. ifstream datos;
  22. datos.open("datos.txt");
  23. if (datos.is_open()){
  24. datos >> num;
  25. while (!datos.fail()){
  26. datos >> num;
  27. cout <<num <<endl;
  28. }
  29. }
  30.  
  31. }
  32.  
  33. int numDigitos(int num){
  34. int nDigitos;
  35. nDigitos = 0;
  36. while (num != 0){
  37. num = num / 10;
  38. nDigitos++;
  39. }
  40. return nDigitos;
  41. }
  42.  
  43. int comprobacion(int num, int nDigitos){
  44. int condicion, digitoI, digitosElevados;
  45. while (num != 0){
  46. digitoI = num%10;
  47. digitosElevados = pow(digitoI, nDigitos);
  48. condicion = condicion + digitosElevados;
  49. num = num/10;
  50. }
  51. return condicion;
  52. }
  53.  
  54. void mostrar(int num){
  55. cout <<"El primer nº narcisista leido es el: " <<num <<endl;
  56. }
  57.  
  58. int main (int argc, char** args){
  59. int num, nDigitos, condicion;
  60. explicacion ();
  61. leerNumeros(num);
  62. nDigitos = numDigitos(num);
  63. condicion = comprobacion(num, nDigitos);
  64. mostrar (num);
  65. system ("pause");
  66. return 0;
  67. }