Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: agrichi en 15 Noviembre 2017, 15:59 pm



Título: Ayuda con mi programa
Publicado por: agrichi en 15 Noviembre 2017, 15:59 pm
Hola, alguien me puede decir que está mal en este programa?
Gracias!!

/* Programa que calcula 2^1+2^2+2^3+...+2^n */

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <math.h>
  4.  
  5. int main()
  6. {
  7. double num,resultado=0;
  8. int i;
  9. printf("Ingrese el valor de \"n\"\n\n");
  10. scanf("%d",&num);
  11. for(i=1;i<=num;i++)
  12.  resultado+=pow(2,(double)i);
  13. system("cls");
  14. printf("El resultado es:  %f\n\n",resultado);
  15. return 0;
  16. }
  17.  

MOD: Etiqueta GeSHi


Título: Re: Ayuda con mi programa
Publicado por: MCKSys Argentina en 15 Noviembre 2017, 18:14 pm
Hola!

No programo mucho en C, pero probando con un debugger/compilador online (https://www.onlinegdb.com/), veo que funciona si declaras num como int:

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <math.h>
  4.  
  5. int main()
  6. {
  7. double resultado=0;
  8. int num;
  9. int i;
  10. printf("Ingrese el valor de \"n\"\n\n");
  11. scanf("%d",&num);
  12. for(i=1;i<=num;i++)
  13.  resultado+=pow(2,(double)i);
  14. system("cls");
  15. printf("El resultado es:  %f\n\n",resultado);
  16. return 0;
  17. }
  18.  

Saludos!


Título: Re: Ayuda con mi programa
Publicado por: MAFUS en 15 Noviembre 2017, 19:31 pm
Pues en verdad declarar num como double pero capturas un dato entero en scanf. En memoria son representaciones totalmente diferentes. Como dice MCKSys Argentina, declara num como int.