Foro de elhacker.net

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



Título: Potencia sin Pow. Error en mi funcion.
Publicado por: Anastacio en 1 Febrero 2012, 20:35 pm
 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


Título: Re: Potencia sin Pow. Error en mi funcion.
Publicado por: Xandrete en 1 Febrero 2012, 20:47 pm
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


Título: Re: Potencia sin Pow. Error en mi funcion.
Publicado por: Anastacio en 1 Febrero 2012, 22:39 pm
Que es un bucle While????



Título: Re: Potencia sin Pow. Error en mi funcion.
Publicado por: DickGumshoe en 1 Febrero 2012, 22:58 pm
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

Código
  1. i=12;
  2. do{
  3.  
  4. i++;
  5. printf("Aumento 1 a i, ya que ahora es %d",i);
  6. }while(i<=11);
  7.  
  8.  

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

Código
  1. i=12;
  2. while(i<=11){
  3. i++;
  4. printf("Aumento 1 a i, ya que ahora es %d",i);
  5. }
  6.  

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.


Título: Re: Potencia sin Pow. Error en mi funcion.
Publicado por: rir3760 en 2 Febrero 2012, 00:33 am
Que 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:
Código
  1. 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