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
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();
}
}
}
C++
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/ (http://www.forosdelweb.com/f96/calcular-potencias-c-477125/)
C#
int ValorA = 2;
int ValorB = 5;
int Resultado = 0;
Resultado = Math.Pow(ValorA, ValorB);
Math.Pow (Método) (https://msdn.microsoft.com/es-es/library/system.math.pow(v=vs.110).aspx/)
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:
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.
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
(https://lh3.googleusercontent.com/-ND2OLU20QGs/VjX0ZKjD0yI/AAAAAAAANUM/IgK2oNJ36Yk/w426-h320/ajasfklasfa.png)
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();
}
}
}
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)
De nada ...