Progresion geometrica con FOR

Iniciado por kraszic, 4 Septiembre 2007, 22:36 PM

0 Miembros y 1 Visitante están viendo este tema.

kraszic

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

sirdarckcat

estemm
Código (batch) [Seleccionar]

@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.

kraszic

Cita de: Sirdarckcat en  4 Septiembre 2007, 22:48 PM
estemm
Código (batch) [Seleccionar]

@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

sirdarckcat

no se me ocurre como la verdad..
Saludos!!

WHK

#4
Mas facil: for /l %i in (1,1,8) do set /A O=%i*%i

WHK

#5
Hice un código que me demoré un tanto pero bueno... acá está:

Según el código de Sirdarckcat:
Código (bash) [Seleccionar]
@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:
Código (bash) [Seleccionar]
@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.

WHK

#6
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 (bash) [Seleccionar]
@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

kraszic

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)

WHK

 :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%

sirdarckcat

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