elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  [Batch] ayuda!! Elevar un Numero a una Potencia
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [Batch] ayuda!! Elevar un Numero a una Potencia  (Leído 9,293 veces)
darkgx

Desconectado Desconectado

Mensajes: 26



Ver Perfil
[Batch] ayuda!! Elevar un Numero a una Potencia
« en: 15 Diciembre 2009, 19:37 pm »

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
Código:
set /a mult=mult * %%_
despues que se imprima el resultado en un archivo .txt...


Código:
@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.

Código:
@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


« Última modificación: 15 Diciembre 2009, 20:44 pm por darkgx » En línea

leogtz
. . .. ... ..... ........ ............. .....................
Colaborador
***
Desconectado Desconectado

Mensajes: 3.069


/^$/


Ver Perfil WWW
Re: [Batch] ayuda!! Elevar un Numero a una Potencia
« Respuesta #1 en: 15 Diciembre 2009, 22:39 pm »

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:

Código
  1. @echo off
  2. :: pow(a, b) = a * a ... multiplicado el numero de veces b.
  3. :code
  4. set /p "base=Base : !!
  5. if not defined base (goto:code)
  6. :_code:
  7. set /p "potencia=Potencia : !!
  8. if not defined potencia (goto:_code)
  9. set /a "producto=1"
  10. for /l %%_ in (1, 1, %potencia%) do (
  11. set /a "producto*=base"
  12. )
  13. echo pow(%base%, %potencia%) = %producto%
  14. exit /b 0
  15.  

Ejecución:
Código:
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:\>


En línea

Código
  1. (( 1 / 0 )) &> /dev/null || {
  2. echo -e "stderrrrrrrrrrrrrrrrrrr";
  3. }
  4.  
http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com
darkgx

Desconectado Desconectado

Mensajes: 26



Ver Perfil
Re: [Batch] ayuda!! Elevar un Numero a una Potencia
« Respuesta #2 en: 16 Diciembre 2009, 00:33 am »

Genial!!  :o Yo me estaba complicando mucho y fue tan sencillo. La unica parte del code es esta
Código
  1. "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  ;-)
En línea

leogtz
. . .. ... ..... ........ ............. .....................
Colaborador
***
Desconectado Desconectado

Mensajes: 3.069


/^$/


Ver Perfil WWW
Re: [Batch] ayuda!! Elevar un Numero a una Potencia
« Respuesta #3 en: 16 Diciembre 2009, 20:42 pm »

Es como decir :
Código:
set /a "producto=producto * base"

Esta es la forma resumida:
Código:
set /a "producto*=base"

Se multiplica "producto por base" y lo que resulte se asigna a producto.
En línea

Código
  1. (( 1 / 0 )) &> /dev/null || {
  2. echo -e "stderrrrrrrrrrrrrrrrrrr";
  3. }
  4.  
http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[Python][Ejercicio (por y para novatos)] Función para elevar potencia
Scripting
kerith 7 16,832 Último mensaje 2 Enero 2011, 14:10 pm
por kerith
Ejercicio elevar una potencia
Ejercicios
SXF 5 19,405 Último mensaje 9 Noviembre 2011, 16:12 pm
por landerzx
Elevar un número a una potencia en C « 1 2 »
Programación C/C++
eaguel 13 43,956 Último mensaje 13 Mayo 2019, 23:58 pm
por aramis
Como elevar una potencia en C
Programación C/C++
ERIK546 4 2,743 Último mensaje 6 Febrero 2014, 00:29 am
por Yoel Alejandro
duda sobre elevar la potencia sin usar la multiplicación?
Programación C/C++
jorge.esquibel 1 662 Último mensaje 18 Septiembre 2018, 23:14 pm
por MAFUS
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines