Hola estoy haciendo un code que eleva numero a una determinada potencia... no me quiere salir. bueno este es el code que tengo hasta ahora. :-\
Lo que quise hacer fue lo sigiente... Hacer un bucle y que se repita la cantidad de veces que la potencia que eligio el usuario y se imprima en un archivo .txt el numero que quiere elevar el usuario, la misma cantidad que se hizo el bucle. osea...
Si el usuario quiere elevar 2^8 entonces se va a hacer una repeticion en un bucle 8 beces y se va a imprimir 8 veces el numero 2. al final se verifica si se hizo 8 veces (osea "if %a%==8 (goto elevar) else goto loop), lo veran mejor en el code.
Despues de esto con FOR revisa el archivo log.txt y va multiplicando el numero linea por linea con un bucle osea.. 5*5 =25 despues queria hacer que se guarde ese numero y en el segundo bucle hacer 25*5=125. lo intente haciendo
set /a mult=mult * %%_
despues que se imprima el resultado en un archivo .txt...
@echo off
title Elevar Potencia - By Darkgx
:loop
REM GUARDAMOS LA CANTIDAD DE NUMEROS DENTRO DE UN ARCHIVO .TXT
echo 5 >> log.txt
set /a a=a + 1
echo %a%
pause > nul
if %a%==5 (goto elevar) else goto loop
goto loop
:elevar
set /a b=b + 1
for /f "skip=%b%" %%_ in (log.txt) do (
set /a mult=mult * %%_
goto:next:
)
:next:
if %b%==5 (goto finish) else goto elevar
:finish
echo %mult% >> resultado.txt
pause > nul
exit
s
e que lo que esta mal es que se hace 0*5 =0 y por eso no sale pero tambien intente hacer esto y tampoco salio.
@echo off
title Elevar Potencia - By Darkgx
:loop
set five=5
REM GUARDAMOS LA CANTIDAD DE NUMEROS DENTRO DE UN ARCHIVO .TXT
echo 5 >> log.txt
set /a a=a + 1
echo %a%
pause > nul
if %a%==5 (goto elevar) else goto loop
goto loop
:elevar
set /a b=b + 1
for /f "skip=%b%" %%_ in (log.txt) do (
set /a mult=%five% * %%_
goto:next:
)
:next:
if %b%==5 (goto finish) else goto elevar
:finish
echo %mult% >> resultado.txt
pause > nul
exit
tambien lo puse sin los % a five y da lo mismo. Creo que la idea esta bien.. pero no sale xD.
Bueno espero que me puedan ayudar... Gracias de antemano! ;D
Darkgx
A ver, a ver, para elevar un número A a la potencia B, solo debes de hacer:
a * a, multiplicado un número de veces B.
Cuando vas a hacer un productorio siempre se inicializan a 1, no a 0, esto para evitar multiplicar siempre por 0 y que te de 0.
Mira esto:
@echo off
:: pow(a, b) = a * a ... multiplicado el numero de veces b.
:code
set /p "base=Base : ";
if not defined base (goto:code)
:_code:
set /p "potencia=Potencia : ";
if not defined potencia (goto:_code)
set /a "producto=1"
for /l %%_ in (1, 1, %potencia%) do (
set /a "producto*=base"
)
echo pow(%base%, %potencia%) = %producto%
exit /b 0
Ejecución:
C:\>code
Base : 2
Potencia : 3
pow(2, 3) = 8
C:\>code
Base : 4
Potencia : 4
pow(4, 4) = 256
C:\>code
Base : 7
Potencia : 8
pow(7, 8) = 5764801
C:\>
Genial!! :o Yo me estaba complicando mucho y fue tan sencillo. La unica parte del code es esta
"producto*=base"
No entiendo que hace ese * (multiplicacion).. es lo unico que no entiendo, no entiendo, que hace detras del =? . Espero tu respuesta Leo Gutierrez.
en realidad lo queria hacer solo pero despues de intentar varias cosas me rendi :-(
Muchas gracias ;-)
Es como decir :
set /a "producto=producto * base"
Esta es la forma resumida:
set /a "producto*=base"
Se multiplica "producto por base" y lo que resulte se asigna a producto.