Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Anastacio en 15 Febrero 2012, 20:12 pm



Título: Problema con un programa calculador de potencias simple, sin pow.
Publicado por: Anastacio en 15 Febrero 2012, 20:12 pm
Les dejo el code.

printf("Coloque la base");
              scanf("%d",&a);
              printf("Coloque el Exponente");
              scanf("%d",&b);
              resultado = a * a;
              while(n <= b);
              {
              resultado = resultado * a;
              n = n++;
              }
              printf("Resultado\n%d",resultado);
              getch();
              break;

Porque no funciona?


Título: Re: Problema con un programa calculador de potencias simple, sin pow.
Publicado por: armizh en 15 Febrero 2012, 20:45 pm
Pone todo el codigo, especialmente donde declaras las variable a y b. Por cierto:
Código
  1. //Notese que le agregaste un ; lo cual hace un bucle hasta que termine la cuenta
  2. //y luego sigue ejecutando lo que esta entre los { }
  3. while(n <= b);
  4. {
  5.    resultado = resultado * a;
  6.    n = n++;
  7. }

No seria mejor usar un bucle for?
Código
  1. for(n=1;n<=b;n++)
  2.    resultado = resultado*a;

y eliminas el primer
Código
  1. resultado = resultado*a;

y recuerda que tienes que declarar a y b como int.

Saludos


Título: Re: Problema con un programa calculador de potencias simple, sin pow.
Publicado por: Anastacio en 15 Febrero 2012, 21:38 pm
No entiendo eso del punto y coma despues del while. Cual es la diferencia en si lo pongo y en si no???

La verdad, disculpame por mi ignorancia, pero no entiendo el for. Que quiere decir alli. Que mientras n sea igual a 1, y n sea menor o igual a b, aumenta uno a n???

Nota: Si, las declare como enteros.

Saludos y  un millon de gracias de antemano.


Título: Re: Problema con un programa calculador de potencias simple, sin pow.
Publicado por: armizh en 15 Febrero 2012, 22:11 pm
Código
  1. for(n=1;n<=b;n++)
  2.    resultado = resultado*a;
Una explicacion rapida, iniciamos n con el valor 1, mientras n sea igual o menor a b aumentamos n y realizamos la accion.
Sobre lo del while, si escribes
Código
  1. while(n <= b);
  2. {
  3.    resultado = resultado * a;
  4.    n = n++;
  5. }
Se puede producir bucle infinito, ya que while espera a que n sea igual o menor a b y luego ejecuta lo que esta entre los { } (en caso de que el compilador acepte eso)
En cambio, sin el ; lo que esta entre los parentesis es parte del while.

Saludos


Título: Re: Problema con un programa calculador de potencias simple, sin pow.
Publicado por: Akai en 15 Febrero 2012, 22:39 pm
Fragmento con el ;

Tu código:
Código
  1. while(n <= b);
  2. {
  3.    resultado = resultado * a;
  4.    n = n++;
  5. }

Lo que el compilador interpreta como dentro del while
Código
  1. while(n <= b);
  2. //nada más
  3.  

Sin el ; el while tiene el efecto que tu deseas
Código
  1. while(n <= b)
  2. {
  3.    resultado = resultado * a;
  4.    n = n++;
  5. }

La diferencia entre la aparición del ; y no, es que el while no tiene instrucciones dentro. O dicho de otra forma, el ; marca el final del bloque while


Título: Re: Problema con un programa calculador de potencias simple, sin pow.
Publicado por: Anastacio en 15 Febrero 2012, 23:36 pm
Aaaaa, claro.

Muchisimas gracias, en un rato lo pruebo.


Título: Re: Problema con un programa calculador de potencias simple, sin pow.
Publicado por: armizh en 16 Febrero 2012, 03:56 am
De nadas :)

Por cierto... no olvides que debes iniciar n con el valor 1 y no 0, o darle el valor 1 (lo segundo en caso de que uses for), ya que supongo que sabras que pasa si pones 0 no? Epic Fail xd

Edito: otra forma de eliminar ese problema puede ser:
Código
  1. for(n=0;n<b;n++)
  2.    resultado = resultado*a;

Saludos


Título: Re: Problema con un programa calculador de potencias simple, sin pow.
Publicado por: Anastacio en 16 Febrero 2012, 19:46 pm
gracias, te lo agradezco mucho.