Potencia sin Pow. Error en mi funcion.

Iniciado por Anastacio, 1 Febrero 2012, 20:35 PM

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

Anastacio

 case 5:
              printf("Coloque la base");
              scanf("%d",&a);
              printf("Coloque el Exponente");
              scanf("%d",&b);
              do {
              resultado = a * a;
              n = n++;
              }while(n != b);
              printf("Resultado\n%d",resultado);
              getch();
              break;
             
Esto es parte de una calculadora que me estuve armando, ya llena de funciones de diferentes tipos. Pero aqui tengo un problema. Se me ocurrio inventarme algo asi para hacer la potencia, pero me doy cuenta de que no anda, no me da el resultado. Porque??

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

Xandrete

Claro que no te da. Lo que guardas en resultado es a*a. En cada iteración guardas a*a. A ver, lo que deberías hacer es olvidarte del bucle do..while y hacerlo con un bucle while. Inicializas resultado a 1 y lo que haces en cada iteración es multiplicar resultado por a (es decir, resultado *= a o resultado = resultado*a).

Saludos

Anastacio

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

DickGumshoe

Para explicarte lo que es el bucle while, te pondré un ejemplo de do-while y sus diferencias con while.

Si por ejemplo pones en un programa


i=12;
do{

i++;
printf("Aumento 1 a i, ya que ahora es %d",i);
}while(i<=11);



Ahí SIEMPRE ejecutará lo que está dentro del do, como mínimo, una vez. Ya, si cumple la condición del while, se ejecuta más veces.

Sin embargo, si pones

i=12;
while(i<=11){
i++;
printf("Aumento 1 a i, ya que ahora es %d",i);
}


Primero se comprueba si se cumple la condición, por lo que en este caso no se ejecuta ninguna vez (al contrario que cuando lo pusimos en un bucle do-while, que se ejecutó una vez).

Espero haberme explicado bien.

Saludos.

rir3760

Cita de: Anastacio en  1 Febrero 2012, 22:39 PMQue es un bucle While????
Espero lo tomes como una critica constructiva: el objetivo de los foros no es enseñar los lenguajes C y C++ en su totalidad, lo es el responder a dudas concretas cuando se tienen problemas en la comprensión de un tópico en particular.

Buena parte de las preguntas que estas realizando en los foros podrías haberlas solucionado de una forma mas fácil (para ti) si tomas un libro de calidad y lo lees con calma y cuidado.

----

Aparte de lo ya comentado por Xandrete hay otro error:
n = n++;
No es valido primero porque no es posible conocer cuando el incremento del operador "++" tendrá efecto y segundo porque se esta modificando un objeto (la variable "n") en mas de una ocasión (entre puntos de secuencia, si eres un principiante eso lo aprenderás después).

Un saludo
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language