Autor
|
Tema: Progresion geometrica con FOR (Leído 8,685 veces)
|
kraszic
Desconectado
Mensajes: 277
|
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 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
|
|
|
En línea
|
|
|
|
sirdarckcat
Aspirante a supervillano
Colaborador
Desconectado
Mensajes: 7.029
No estoy loco, soy mentalmente divergente
|
estemm @echo off set i=1 FOR /L %%a IN (0,1,3) DO ( call:geo ) goto:EOF :geo echo %i% set /A i=%i%*2 goto:EOF
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.
|
|
|
En línea
|
|
|
|
kraszic
Desconectado
Mensajes: 277
|
estemm @echo off set i=1 FOR /L %%a IN (0,1,3) DO ( call:geo ) goto:EOF :geo echo %i% set /A i=%i%*2 goto:EOF
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
|
|
|
En línea
|
|
|
|
sirdarckcat
Aspirante a supervillano
Colaborador
Desconectado
Mensajes: 7.029
No estoy loco, soy mentalmente divergente
|
no se me ocurre como la verdad.. Saludos!!
|
|
|
En línea
|
|
|
|
WHK
|
Mas facil: for /l %i in (1,1,8) do set /A O=%i*%i
|
|
« Última modificación: 6 Septiembre 2007, 09:31 am por WHK »
|
En línea
|
|
|
|
WHK
|
Hice un código que me demoré un tanto pero bueno... acá está: Según el código de Sirdarckcat: @echo off set i=1 FOR /L %%a IN (0,1,9) DO ( call:geo ) goto:EOF :geo echo %i% set /A i=%i%*2 goto:EOF
Da como resultado: 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: @echo off set/p calcular=Escribe tu cifra: :1 set /A div=calcular/2 echo %div% set calcular=%div% echo.>%div% if exist 0 (pause&&del /f /q %div%&&exit) else echo.>nul del /f /q %div% goto 1
Da como resultado: 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.
|
|
« Última modificación: 6 Septiembre 2007, 09:55 am por WHK »
|
En línea
|
|
|
|
WHK
|
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: @echo off echo @echo off > E.bat echo del /f /q 0 >> E.bat echo cls >> E.bat echo set/p calcular=Escribe tu cifra: >> E.bat echo :1 >> E.bat echo set /A div=calcular/2 >> E.bat echo echo ^%%div^%% >> E.bat echo set calcular=^%%div^%% >> E.bat echo echo.^>^%%div^%% >> E.bat echo if exist 0 (pause^&^&del /f /q ^%%div^%%^&^&exit) else echo.^>nul >> E.bat echo del /f /q ^%%div^%% >> E.bat echo goto 1 >> E.bat cmd /c E.bat del /f /q E.bat
|
|
« Última modificación: 6 Septiembre 2007, 10:15 am por WHK »
|
En línea
|
|
|
|
kraszic
Desconectado
Mensajes: 277
|
ya lo tengooOoOoOOO!!! Muchas gracias a los dos por ayudarme @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: 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)
|
|
|
En línea
|
|
|
|
WHK
|
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%
|
|
|
En línea
|
|
|
|
sirdarckcat
Aspirante a supervillano
Colaborador
Desconectado
Mensajes: 7.029
No estoy loco, soy mentalmente divergente
|
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
|
|
|
En línea
|
|
|
|
|
|