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
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.
Cita de: Sirdarckcat en 4 Septiembre 2007, 22:48 PM
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
no se me ocurre como la verdad..
Saludos!!
Mas facil: for /l %i in (1,1,8) do set /A O=%i*%i
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:
CitarC:\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:
CitarC:\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.
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
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)
: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%
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
Cita de: 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
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
Claro... unos dos o tres post mas arriba de este.
http://foro.elhacker.net/index.php/topic,132924.0.html