Ms-Dos - AYUDA!! Piramide numeros .bat

 
Vista:
sin imagen de perfil

AYUDA!! Piramide numeros .bat

Publicado por Raul (1 intervención) el 14/12/2021 18:58:22
Buenas, necesito que a partir del 9 ya no muestre un 0 delante del numero pero no se porque no continua con el bucle:

@echo off
SetLocal EnableDelayedExpansion
:numero
echo Introduce un numero:
set /p lineas=
if not defined lineas (goto:numero)
if %lineas% GTR 40 (goto:mayor)
if %lineas% LEQ 40 (goto:menor)


:mayor
echo Elija un numero menor de 40
pause
goto numero

:menor
for /L %%a in (1, 1, %lineas%) do (
set Res=
for /L %%b in (1, 1, %%a) do if %%a LEQ 9 set Res=!Res!0%%a
if %%a GEQ 10 set Res=!Res!%%a
echo !Res!
)
pause
:salir
exit




ESTO ES LO QUE MUESTRA:

INSERTE NUMERO:
11
01
0202
030303
04040404
0505050505
060606060606
07070707070707
0808080808080808
090909090909090909
10
11





GRACIAS
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Antoni Masana
Val: 1.419
Oro
Ha mantenido su posición en Ms-Dos (en relación al último mes)
Gráfica de Ms-Dos

AYUDA!! Piramide numeros .bat

Publicado por Antoni Masana (811 intervenciones) el 14/12/2021 20:32:07
El Bat hace exactamente lo que dices hace.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
@echo off
SetLocal EnableDelayedExpansion
:numero
    set /p lineas=Introduce un numero:
    if not defined lineas (goto:numero)
    if %lineas% GTR 40 (goto:mayor)
    if %lineas% LEQ 40 (goto:menor)
 
:mayor
    echo Elija un numero menor de 40
    pause
    goto numero
 
:menor
    for /L %%a in (1, 1, %lineas%) do (
        set Res=
        for /L %%b in (1, 1, %%a) do if %%a LEQ 9 set Res=!Res!0%%a
        if %%a GEQ 10 set Res=!Res!%%a
        echo !Res!
    )
    pause
:salir
goto:EOF

Este es el resultado:

1
2
3
4
5
6
7
8
9
10
11
Introduce un numero: 9
01
0202
030303
04040404
0505050505
060606060606
07070707070707
0808080808080808
090909090909090909
Presione una tecla para continuar . . .

Y aquí otro Resultado con unos cambios:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
@echo off
SetLocal EnableDelayedExpansion
:numero
    set /p lineas=Introduce un numero:
    if not defined lineas (goto:numero)
    if %lineas% GTR 40 (goto:mayor)
    if %lineas% LEQ 40 (goto:menor)
 
:mayor
    echo Elija un numero menor de 40
    pause
    goto numero
 
:menor
    for /L %%a in (1, 1, %lineas%) do (
        set Res=
        for /L %%b in (1, 1, %%a) do if %%a LEQ 9 set Res=!Res! %%a
        if %%a GEQ 10 set Res=!Res!%%a
        echo !Res!
    )
    pause
:salir
goto:EOF

Y este es el resultado con un pequeño cambio:

1
2
3
4
5
6
7
8
9
10
11
Introduce un numero: 9
 1
 2 2
 3 3 3
 4 4 4 4
 5 5 5 5 5
 6 6 6 6 6 6
 7 7 7 7 7 7 7
 8 8 8 8 8 8 8 8
 9 9 9 9 9 9 9 9 9
Presione una tecla para continuar . . .
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar