Test Foro de elhacker.net SMF 2.1

Programación => Scripting => Mensaje iniciado por: BlacKGilgamesH en 6 Abril 2010, 19:41 PM

Título: Ayuda con Batch. [Solucionado]
Publicado por: BlacKGilgamesH en 6 Abril 2010, 19:41 PM
Hola, soy nuevo aqui en el foro, pero llevo programando en batch un buen tiempo, pero tengo un problema, en el siguiente codigo, pide al usuario un numero, por ejemplo 5, y tendria que mostrar algo asi.

+
++
+++
++++
+++++

osea, que haga X cantidad de filas con cada vez un "+"  más, y lo que hace es:

+
+
+
+
+

Pero no se que este mal en este codigo.

Código (dos) [Seleccionar]
@echo off
title Piramide Astericos
color f0
cls
echo.Numero de filas de la piramide?
set/p aster=
set num=1
cls
:ini2
call:aster1 %num%
if %num%==%aster% (
goto fin1
) else (
set/a num=%num%+1
goto ini2
)
:fin1
pause>nul
exit
:aster1
echo.*


De antemano gracias.

PD:En el codigo los "+" son "*"
Título: Re: Ayuda con Batch.
Publicado por: leogtz en 6 Abril 2010, 20:19 PM
Lo que debes de hacer:

En una variable ir concatenando los asteriscos:

Código (dos) [Seleccionar]
@echo off
:code
set /p "lineas=Ingresa un numero : "
if not defined lineas (goto:code)
set "string=*"
:loop
echo %string%
set "string=%string%*"
set /a "cont+=1"
if %cont% neq %lineas% (goto:loop)
set /p "="
exit /b 0


No tiene caso que te compliques tanto con tantos gotos y etiquetas.

Incluso podrías con FOR:
Código (dos) [Seleccionar]
@echo off
setlocal enabledelayedexpansion
:code
set /p "lineas=Ingresa un numero : "
if not defined lineas (goto:code)
set "string=*"
for /l %%_ in (1, 1, %lineas%) do (
echo !string!
set "string=!string!*"
)
set /p "="
exit /b 0


Aquí otra menera de como se haría por ejemplo en C:

Código (dos) [Seleccionar]
@echo off
rem Piramide de 5 lineas.
for /l %%i in (1, 1, 5) do (
for /l %%j in (1, 1, %%i) do (
< nul set /p "=*"
)
echo.
)
pause>nul
exit /b 0


Cualquier duda aquí estamos.
Título: Re: Ayuda con Batch.
Publicado por: BlacKGilgamesH en 6 Abril 2010, 20:25 PM
Gracias, ya esta solucionado, me sirvio.