Problema con un programa calculador de potencias simple, sin pow.

Iniciado por Anastacio, 15 Febrero 2012, 20:12 PM

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

Anastacio

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?
You, stop to close my post, you were novice too!!!!!!!!!!!!

armizh

#1
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
Visita mi blog:
http://armizh.10h.us/
Fnx, fork de FreeNOS:
Código (sh) [Seleccionar]
git clone https://github.com/armizh/Fnx
Hamster, Entorno Integrado de Desarrollo C/C++:
Código (sh) [Seleccionar]
git clone https://github.com/armizh/Hamster

Anastacio

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.
You, stop to close my post, you were novice too!!!!!!!!!!!!

armizh

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
Visita mi blog:
http://armizh.10h.us/
Fnx, fork de FreeNOS:
Código (sh) [Seleccionar]
git clone https://github.com/armizh/Fnx
Hamster, Entorno Integrado de Desarrollo C/C++:
Código (sh) [Seleccionar]
git clone https://github.com/armizh/Hamster

Akai

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

Anastacio

You, stop to close my post, you were novice too!!!!!!!!!!!!

armizh

#6
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
Visita mi blog:
http://armizh.10h.us/
Fnx, fork de FreeNOS:
Código (sh) [Seleccionar]
git clone https://github.com/armizh/Fnx
Hamster, Entorno Integrado de Desarrollo C/C++:
Código (sh) [Seleccionar]
git clone https://github.com/armizh/Hamster

Anastacio

You, stop to close my post, you were novice too!!!!!!!!!!!!