Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: kraszic en 4 Septiembre 2007, 22:36 pm



Título: Progresion geometrica con FOR
Publicado por: kraszic en 4 Septiembre 2007, 22:36 pm
Hola, me gustaria saber si hay alguna manera de utilizar el for para hacer una progresion geometrica.

Lo q quiero decir es q con el for con este codigo puedo hacer una progresion aritmetica, en q hay un incremento
Código:
FOR /L %%a IN (2,2,8) DO echo %%a
Esto daria de resultado: 2, 4, 6, 8

Habria alguna manera de hacer una progresion tipo: 2, 4, 8, 16, 32, 64
En la q a cada numero se le multiplica una razon (en este caso 2)
Yo creo q la solucion estarian en multiplicar el termino resultante por 2 pero no sabria como hacerlo. Se puede hacer?? Como??

saludos


Título: Re: Progresion geometrica con FOR
Publicado por: sirdarckcat en 4 Septiembre 2007, 22:48 pm
estemm
Código
  1. @echo off
  2. set i=1
  3. FOR /L %%a IN (0,1,3) DO (
  4. call:geo
  5. )
  6.  
  7. goto:EOF
  8. :geo
  9. echo %i%
  10. set /A i=%i%*2
  11. goto:EOF
  12.  
cambia el 3 en  0,1,3 por la potencia hasta donde quieres llegar

Saludos!!

PD. tambien se puede hacer activando unas extensiones de cmd, pero es mas complicado.


Título: Re: Progresion geometrica con FOR
Publicado por: kraszic en 5 Septiembre 2007, 10:33 am
estemm
Código
  1. @echo off
  2. set i=1
  3. FOR /L %%a IN (0,1,3) DO (
  4. call:geo
  5. )
  6.  
  7. goto:EOF
  8. :geo
  9. echo %i%
  10. set /A i=%i%*2
  11. goto:EOF
  12.  
cambia el 3 en  0,1,3 por la potencia hasta donde quieres llegar

Saludos!!

PD. tambien se puede hacer activando unas extensiones de cmd, pero es mas complicado.

gracias no lo habia pensado, y mira q estuve pensando, me faltara practica.
Una preg, se podria hacer de alguna manera para q envez de poner el numero de terminos q tiene q tener la progresion se pudiera poner el ultimo termino de la progresion. Por ejemplo q el ultimo termino fuera 120 y al llegar ahi se detuviera.
Se puede hacer??

saludos


Título: Re: Progresion geometrica con FOR
Publicado por: sirdarckcat en 5 Septiembre 2007, 16:51 pm
no se me ocurre como la verdad..
Saludos!!


Título: Re: Progresion geometrica con FOR
Publicado por: WHK en 6 Septiembre 2007, 09:21 am
Mas facil: for /l %i in (1,1,8) do set /A O=%i*%i


Título: Re: Progresion geometrica con FOR
Publicado por: WHK en 6 Septiembre 2007, 09:47 am
Hice un código que me demoré un tanto pero bueno... acá está:

Según el código de Sirdarckcat:
Código
  1. @echo off
  2. set i=1
  3. FOR /L %%a IN (0,1,9) DO (
  4. call:geo
  5. )
  6.  
  7. goto:EOF
  8. :geo
  9. echo %i%
  10. set /A i=%i%*2
  11. goto:EOF
  12.  

Da como resultado:
Citar
C:\WINDOWS>"C:\Documents and Settings\Yan\Escritorio\probar.bat"
1
2
4
8
16
32
64
128
256
512

Según mi código:
Código
  1. @echo off
  2. set/p calcular=Escribe tu cifra:
  3.  
  4. :1
  5. set /A div=calcular/2
  6. echo %div%
  7. set calcular=%div%
  8. echo.>%div%
  9. if exist 0 (pause&&del /f /q %div%&&exit) else echo.>nul
  10. del /f /q %div%
  11. goto 1

Da como resultado:
Citar
C:\WINDOWS>"C:\Documents and Settings\Yan\Escritorio\test.bat"
Escribe tu cifra: 512
256
128
64
32
16
8
4
2
1
0
Presione una tecla para continuar . . .

Supongo que era eso lo que buscabas no?
Puedes poner el if exist antes del echo para evitar que muestre el cero.


Título: Re: Progresion geometrica con FOR
Publicado por: WHK en 6 Septiembre 2007, 09:58 am
Ahora si deceas puedes crear un segundo bat con comandos echo para evitar que te cierre la consola en caso de que estés dentro de una seción:

Código
  1. @echo off
  2. echo @echo off > E.bat
  3. echo del /f /q 0 >> E.bat
  4. echo cls >> E.bat
  5. echo set/p calcular=Escribe tu cifra:   >> E.bat
  6. echo :1  >> E.bat
  7. echo set /A div=calcular/2  >> E.bat
  8. echo echo ^%%div^%%  >> E.bat
  9. echo set calcular=^%%div^%%  >> E.bat
  10. echo echo.^>^%%div^%%  >> E.bat
  11. echo if exist 0 (pause^&^&del /f /q ^%%div^%%^&^&exit) else echo.^>nul  >> E.bat
  12. echo del /f /q ^%%div^%%  >> E.bat
  13. echo goto 1  >> E.bat
  14. cmd /c E.bat
  15. del /f /q E.bat


Título: Re: Progresion geometrica con FOR
Publicado por: kraszic en 6 Septiembre 2007, 11:21 am
ya lo tengooOoOoOOO!!!
Muchas gracias a los dos por ayudarme

Código:
@echo off
set /p ini=Escribe el primer termino:
set /p ra=Escribe la razon de la progresion:
set /p fina=Escribe el final de la progresion:
echo.
echo %ini%

:inicio
set /A mult=ini*%ra%
if %mult% GTR %fina% (pause>nul&&exit)
echo %mult%
set ini=%mult%
goto inicio

Da como resultado:
Código:
Escribe el primer termino: 2
Escribe la razon de la progresion: 3
Escribe el final de la progresion: 1000

2
6
18
54
162
486

Bueno, eso es lo q buscaba des de el principio no se si puede ser q os haya liado.
Ya q estamos en el post me gustaria haceros una pregunta mas, ya q tengo la progresion echa me gustaria q con el programa el usuario pudiera hacer algunas operaciones con ella como sumarla o calcular un numero n en la progresion, pero para hacer estas operaciones necesitaria saber el valor de n, y no se como hacer para q el programa lo saque porq ice otro programa con una progresion aritmetica y consegui sacar el valor de n mediante una ecuacion pero aqui no se como sacar n. Como lo podria sacar???

saludos

PD: Para los q no sepan q es n en este ejemplo de arriba, n = 6 (porq hay seis terminos, seis numeros)


Título: Re: Progresion geometrica con FOR
Publicado por: WHK en 6 Septiembre 2007, 19:39 pm
 :xD no te entiendo pero puedes ejecutar un echo.>%valor% y después ejecutar un if exist y preguntar con set /p operacion=Escribe la operación y realizas la operación con set /A var=%valor%%operacion%%valor2%


Título: Re: Progresion geometrica con FOR
Publicado por: sirdarckcat en 6 Septiembre 2007, 22:45 pm
pues la duda que se planteo al principio, de si se podia hacer una progresion geometrica con un FOR, cambio de tema y terminaron usando IF xD

puedes hacer ecuaciones con batch :P


Título: Re: Progresion geometrica con FOR
Publicado por: kraszic en 6 Septiembre 2007, 23:11 pm
pues la duda que se planteo al principio, de si se podia hacer una progresion geometrica con un FOR, cambio de tema y terminaron usando IF xD

puedes hacer ecuaciones con batch :P
si tienes razon, no se porq le puse ese titulo al post, como habia visto q se podian hacer progresiones aritmeticas con el for pues pregunte si se podian acer progresiones geometricas, pero vamos, lo q buscaba era un metodo para hacerlas, la manera me daba igual, perdon por liarte... ;) A mi tampoco se me ocurrio nada porq no salia de pensar en como hacerlo con for.

y lo de las ecuaciones en batch hay algun manual por ahi?? como se acen??

saludos


Título: Re: Progresion geometrica con FOR
Publicado por: WHK en 7 Septiembre 2007, 03:05 am
Claro... unos dos o tres post mas arriba de este.
http://foro.elhacker.net/index.php/topic,132924.0.html