(Ayuda) Calcular potencia de base x y exponente n

Iniciado por stealkiller06, 31 Octubre 2015, 20:58 PM

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

stealkiller06

Muy buenas a todos, estoy intentando hacer un programa para calcular la potencia de un numero que ingrese el usuario elevado a otro numero que ingrese el usuario mediante el teclado.

Todo me da bien, pero cuando intento calcular por ejemplo 2^5 el resultado me da  16.

Gracias de antemano :v

Código (csharp) [Seleccionar]


using System;

namespace CalcularPotencia
{
class Program
{
static void Main()
{
int c = 1, n = 1 , p, i= 0, resultado = 1 ;
string valor = "";

valor = Console.ReadLine();
n = Convert.ToInt32(valor);

valor = Console.ReadLine();
p = Convert.ToInt32(valor);

c = n ;
if ( p > 1 ) {


for (i = 0 ; i <= p  ; i++ )
{

n = n * c;

i++;
}
}
Console.WriteLine("el resultado es {0}", n );
Console.ReadKey();
}
}
}

Lekim

#1
C++
Código (cpp) [Seleccionar]
float potencia(float x,int y)
  {
  float acum=1:
  for(int i=1;i<=y;i++)
     acum*=x;
  return(acum);
  }


http://www.forosdelweb.com/f96/calcular-potencias-c-477125/


C#
Código (csharp) [Seleccionar]
int ValorA = 2;
int ValorB = 5;
int Resultado = 0;
Resultado = Math.Pow(ValorA, ValorB);


Math.Pow (Método)

ivancea96

En primer lugar, pusiste i++; 2 veces: la primera en el incremento del bucle for, y otra dentro del bucle for. Elimina una (deberías dejar la del incremento del bucle).

El for es incorrecto. Debería ser:
Código (csharp) [Seleccionar]
for (i = 1 ; i < p  ; i++ )

Corregido eso, ese if sobra. No es necesario, puesto que el for simplemente no hará nada si p <= 1.

stealkiller06


Gracias por contestarme; no me había fijado que puse 2 i++ XD;
ahora lo hice como me dijiste; pero igual me esta dando mal; el bucle se esta repitiendo  1 ciclo mas del que quiero que se repita. Aqui te dejo la imagen para que veas :D




using System;

namespace CalcularPotencia
{
class Program
{
static void Main()
{
int c = 1, n = 1 , p, i= 0, resultado = 1 ;
string valor = "";


Console.WriteLine("Digite la base");
valor = Console.ReadLine();
n = Convert.ToInt32(valor);

Console.WriteLine("Digite el exponente");
valor = Console.ReadLine();
p = Convert.ToInt32(valor);

c = n ;

Console.WriteLine();

for (i = 0 ; i < p  ; i++ )
{

n = n * c;
}

Console.WriteLine("el resultado es {0}", n );
Console.ReadKey();
}
}
}

stealkiller06

Ya lo pude arreglar muchas gracias por tu ayuda ivancea96 n.n, el ciclo daba una vuelta de mas porque puse que i comenzara a contar desde 0.
PD: soy novato(obvio :V)