Test Foro de elhacker.net SMF 2.1

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:
//Notese que le agregaste un ; lo cual hace un bucle hasta que termine la cuenta
//y luego sigue ejecutando lo que esta entre los { }
while(n <= b);
{
    resultado = resultado * a;
    n = n++;
}


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


y eliminas el primer
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
for(n=1;n<=b;n++)
    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
while(n <= b);
{
    resultado = resultado * a;
    n = n++;
}

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:
while(n <= b);
{
    resultado = resultado * a;
    n = n++;
}


Lo que el compilador interpreta como dentro del while
while(n <= b);
//nada más


Sin el ; el while tiene el efecto que tu deseas
while(n <= b)
{
    resultado = resultado * a;
    n = n++;
}


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:
for(n=0;n<b;n++)
    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.