Ejercicio elevar una potencia

Iniciado por SXF, 19 Abril 2011, 15:05 PM

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

SXF

Buenas se propone un ejercicio que utilizando el ciclo do while, nos pida un numero y luego la potencia , y obtener el resultado.

OjO el ejercicio a de estar hecho en c++.


criskapunk

Te doy una idea, despues te toca traducirlo a C++ :P

Sabemos que una potenciacion es un conjunto de multiplicaciones. Ejemplo: 2 ** 3 = 2 x 2 x 2.
Usando algun contador, planteamos la condicion del bucle, el cual debe repetirse n veces (El valor que se le asigno al exponente). Ya dentro del bucle, usando un acumulador multiplicamos al valor de la base por el exponente.

Espero que me hayas entendido ;D

Un saludo

SXF

#2
Cierto aqui esta traducido a c++, claro esta antes de que contestaras :P.Por cierto la idea que has planteado esta bien pero no has tenido en cuenta los erros, como si alguien decidiera poner 0^-1 = 1/0...Asi que la respuesta no esta del todo bien.


Código (cpp) [Seleccionar]
#include<iostream>
#include<stdio.h>
#include<conio.h>
//Ejemplo de elevar potencia sin utilizar Funciones Recurcivas
using namespace std;
int calculadora( int n, int m)
{
int i=0,result=1;

            if (m==1 || m==-1) {return n;}

    else {
     do
{
     
 i=i+1;
result=result*n;



}while(i!=m);
return result;
}

}


int main()
{    
    int n,m;
   
   
    cout<<"Dime un numero: "<<" "<<endl;
   cin>>n;
   cout<<"Dime su potencia: "<<" "<<endl;
   cin>>m;
   if(m==0) cout<<"El resultado es: 1"<<endl; else{
   if (m==-1 && n==0) {cout<<"Error 1/0 es un indeterminacion y no tiene solucion"<<endl;} else{
   if (m==-1) {cout<<"El resultado es: 1/"<<calculadora(n,m)<<endl;}
   
    else{  cout<<"El resultado es: "<<" "<<calculadora(n,m)<<endl;}
    }
    }
    system("PAUSE");
    return 0;
}

Lx

#include <stdlib.h>
#include <stdio.h>

int potencia( int n, int e);

int main()
{
   int num, exp;
   float res;
   
   printf("\nIngrese un n%cmero: ", 163);
   scanf("%d", &num);
   
   printf("\nIngrese el exponente (entero): ");
   scanf("%d", &exp);
   
   res = (float)potencia( num, abs(exp));
   if( exp < 0)
      res = 1./res;
     
   printf("\n\nEl resultado de %d a la %d, es: ", num, exp);   
   if( num == 0 && exp <= 0)
      printf("Indefinido . . .\n");
   else
      printf("%.4f\n", res);
   
   while( getchar()!='\n');
   printf("\n\nPresione ENTER para salir . . .");
   getchar();
   return EXIT_SUCCESS;
}

int potencia( int n, int e)
{
   int r = 1;
   for( int i = 1; i <= e; i++){
     
      r *= n;
   }
   return r;
}

.mokk.

Aqui esta el mio usando solo sumas


#include <cstdlib>
#include <iostream>

using namespace std;

int potencia(int n, int p)
{
    int v = 1,t = 0;
    for(int i = 0; i < p; i++)
    {
            for(int x = 0; x < v; x++)
            {
                   t += n;
            }
            v = t;
            t = 0;
    }
    return v;                   
   
}

int main(int argc, char *argv[])
{
    int n = 0,p = 0;
    cout << "Ingresa Numero: ";
    cin >> n;
    cout << "Potencia: ";
    cin >> p;
    cout << potencia(n, p) << endl;
    cin;
    return EXIT_SUCCESS;
}

landerzx

hola amigo.......yo a los tiempos que vuelvo al foro..... bueno aqui esta el codigo espero que sea muy sencillo de analizar

#include<iostream.h>
#include<conio.h>
int matematico(int B,int P)
{
  int retorna=1;
for(int c;c<P;c++)
     retorna*=B;
     
       return retorna;
}
main()
{
unsigned int b,p;
cout<<"Ingrese la base: ";
cin>>b;
cout<<"Ingrese la potencia: ";
cin>>p;
cout<<"La respuesta es: "<<matematico(b,p);
getch();
}