Calcular potencias en C++ sin pow

Tema: Potencias en C++ no usando la función pow

Aunque la librería math de C o cmath de C++ poseen una función específica para calcular potencias llamada pow, y ciertamente cumple su función de forma muy eficiente, por lo cual al momento de crear un software que tenga que hacer algunos cálculos matemáticos si conviene el uso de esta librería, es muy útil para el estudiante crear una capacidad de generar sus propios algoritmos porque al final las funciones tienen un algoritmo que se basa en pasos básicos.

Código para calcular potencias en C++



El código que utilizare para este fin también puede adaptarse al lenguaje C, nada más que algunas funciones como cout deberían de cambiarse para C, pero el núcleo del funcionamiento es válido para ambos lenguajes.

Antes de pasar al código repasemos en un párrafo lo que es una potencia, esta es una operación matemática que posee únicamente 2 cantidades la primera se le llama base y la segunda se denomina exponente, a diferencia de la multiplicación no se multiplica la base por el exponente (ambas cantidades) de forma directa, sino que se multiplica la base por si misma tantas veces como el exponente lo indica. U ejemplo rápido seria mencionar la potencia cuya base es 2 y su exponente es 3, si me equivoco y multiplico la base por el exponente 2*3=6, pero si lo hago bien multiplicare el 2 tantas por sí mismo tantas veces como el exponente me lo indica, en este caso seria 3 así es que 2*2*2 es 8.

Código para potencia con while.



#include <iostream>
#include <cstdlib>

using namespace std;

int base;
int exponente;
int resultado=0;

int main(){

cout << "Este programa le permite calcular potencias." << endl;
cout << "Ingrese la base ";
cin >> base;
cout << "Ingrese el exponente ";
cin >> exponente;
int x=1;
while (x<exponente){
if (resultado<base){
resultado=base*base;
}
else{
resultado=resultado*base;
}
x++;
}
cout << "El resultado es: " << resultado << endl;

system("pause");
return 0;
}


Ejemplo del calculo de potencias sin pow en C++

Calcular varias potencias sin cerrar la ventana



Con el código anterior ya nuestro programa funciona dándonos la posibilidad de calcular nuestras potencias de forma automática, pero posterior a darnos el resultado, nuestro programa se cerrar tan pronto presionemos una tecla para continuar, de momento no hay como evitar esto, más con el siguiente código tras calcular una potencia le preguntaremos al usuario si quiere calcular otra potencia o si desea salir del programa.

Todo esto lo haremos con la ayuda del bucle while y una variable donde almacenaremos la opción que el usuario elija, pero para esto sacaremos todo el código que calcula las potencias y lo moveremos arriba de la función main para encerrarlo en una función, dicha función posteriormente se llamará si el usuario así lo desea.

Calcular varias potencias en C++ con un bucle

#include <iostream>
#include <cstdlib>
using namespace std;

int base;
int exponente;
int resultado=0;
int calcular=1; // Esta variable es nueva, la opcion 1 estará por defecto.

void potencia(){ // nuestra funcion se llamará potencia.
cout << "Este programa le permite calcular potencias." << endl;
cout << "Ingrese la base ";
cin >> base;
cout << "Ingrese el exponente ";
cin >> exponente;
int x=1;
while (x<exponente){
if (resultado<base){
resultado=base*base;
}
else{
resultado=resultado*base;
}
x++;
}
cout << "El resultado es: " << resultado << endl;
resultado=0;
cout << "Desea calcular otra potencia? Presione (1) Si o (2) No" << endl; /* Aqui preguntamos al usuario
si desea Calcular otra potencia o no */
cin >> calcular; // Almacenamos el valor en la variable calcular
}
int main(){
while (calcular==1){ // Con este bucle verificamos que opcion ha elegido el usuario.
potencia(); // De ser asi llamamos a la funcion potencia
}
return 0;
}
Comentarios y preguntas
Alexander:
Muy genial, gracias!
Karina:
Disculpe , pero al seguir calculandolo los resultados son incorrectos
Codigazo:
hola alexander gracias a usted por sacar el tiempito para comentar.
Codigazo:
hola Karina, muchas gracias por haber informado de ese error, tras revisarlo he actualizado el código corregido. Este error se presentaba porque el valor de la variable resultado nunca se reseteaba entonces se acumulaba su valor sumándose a los valores nuevos, la solución fue sencilla, tuvimos que colocar "resultado=0;" justo después de imprimir el valor de la variable resultado en el segundo ejemplo.