Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - legolas266

#2
Ok ya lo solucioné yo mismo. Gracias de todas formas.
#3
Si efectivamente, joder que chorrada. Ya lo habia sacado y te iba a decir que ya estaba solucionado.

Gracias por la informacion de todos modos Crack. ;-)
#4
Me suponia que algo estaba mal. Sabrias decirme como seria el algoritmo correcto?. Estoy empezando en esto de la programacion Bash Script y estoy muy verde aun.

Gracias por la ayuda.
#5
Tema solucionado. gracias.
#6
Ok, gracias crack... si tenia un gran lio con las comparaciones dichosas.

No se me habia ocurrido comparar para el tema de la longitud con:
if %numero% LEQ 99999 .... para 5 digitos.. etc..

Solo con modificar la parte de mi codigo donde tenia comparado el numero con -1 ya funciona completamente bien el programa.

Joder aun no tengo mucha idea de esto de programación pero poco a poco como en todas las cosas se va avanzando.

Gracias una vez mas gracias por la ayuda.
#7
Ok ya esta modificado el post, disculpad no sabia eso.
#8
Hola, buenos dias. Necesito hacer funcionar correctamente el siguiente script que debe decirme si un numero es capicua o no (el numero tendrá un maximo de 5 cifras) usando unicamente las funciones que pongo en mi codigo ya que es programacion a nivel basico y no me permiten usar otro tipo de comandos para hacerlo.

De momento solo consigo que me funcione insertando un numero de 5 cifras, con menos cifras se me sale del programa o me dá un resultado incorrecto. A ver si alguien me dice donde está el fallo del mismo.

El codigo es el siguiente:
Código (DOS) [Seleccionar]
@Echo off
setlocal enabledelayedexpansion
title Ejercicio 9. Numeros Capicua
set numero=""
:comienzo
echo.
echo ===========================================
echo          Numero Capicua o no....
echo ===========================================
echo.
Set /P numero="Introduce un numero de 5 cifras "
if %numero%=="" (
goto error
) else (
goto variables
)

:variables
set num1=%numero:~0,1%
set num2=%numero:~1,1%
set num3=%numero:~2,1%
set num4=%numero:~3,1%
set num5=%numero:~4,1%
goto longitud

:longitud
if !num5! gtr -1 (
goto compara4
)
if !num4! gtr -1 (
goto compara3
)
if !num3! gtr -1 (
goto compara2
)
if !num2! gtr -1 (
goto compara1
)
if !num1! gtr -1 (
goto compara
)

:compara
echo.
echo El numero introducido es Capicua.
goto fin

:compara1
if !num1! equ !num2! (
echo El numero introducido es Capicua.
goto fin
) else (
echo El numero introducido no es Capicua.
goto fin
)
:compara2
if !num1! equ !num3! (
echo El numero introducido es Capicua.
goto fin
) else (
echo El numero introducido no es Capicua.
goto fin
)

:compara3
if !num1! equ !num4! (
if !num2! equ !num3! (
echo El numero introducido es Capicua.
goto fin
)
) else (
echo El numero introducido no es Capicua.
goto fin
)

:compara4
if !num1! equ !num5! (
if !num2! equ !num4! (
echo El numero introducido es Capicua.
goto fin
)
) else (
echo El numero introducido no es Capicua.
goto fin
)

:error
echo.
echo ERROR! .No ha introducido ningun numero.
pause
goto comienzo

:fin
echo.
pause
exit


Gracias a todos por su ayuda.
#9
Lo se pero no me funciona. Aun así, si fueras tan amable de explicarme para que sirven estas lineas de codigo... me gustaria entenderlo para saberlo hacer la proxima vez o cuando se me planteen otros ejercicios.

(ECHO "%WORD%">"%TEMP%\Word.txt" & FOR %%# IN ("%TEMP%\Word.txt") DO (SET /A "Word_Length=%%~z# - 5"))
- De esta linea entiendo que la variable WORD es sacada a un archivo de texto llamado Word.txt en la carpeta temp, supongo que el for es para asignar al simbolo de la almuadilla la cadena numerica que contiene el archivo Word.txt y ya donde me pierdo del todo es en esta parte del codigo: (SET /A "Word_Length=%%~z# - 5")),
se supone que es una operacion matematica, pero no la entiendo... para letras supongo que se referirá que tenga en cuenta de la a a la z, pero el - 5 para que sirve.. o si me lo pudieras explicar todo mejor.
-----------------------------------------------------------------------
Call Set "Compare_A=%%WORD:~0,%Word_Middle%%%"
Call Set "Compare_B=%%WORD:~-%Word_Middle%%%"
Estas lineas, la variable Comapre_A, supongo que se refiere a que dentro de la Variable Word se empieze a contar desde la posicion 0, pero no entiendo el resto, la coma que viene despues y la variable esa que no se de donde ha salido ni lo que hace %Word_Middle%, y si para datos numericos se aplica igualmente.
De la segunda variable Compare_B, entiendo que para la variable Word  esta vez es para que lea desde la ultima cifra o letra (~-) pero no entiendo porque esta vez la variable %Word_Middle% no va separado por una coma, deduzco que la coma es para decir que empieze a leer desde la ultima letra o cifra hasta la mitad... al no tener coma me lio y no entiendo porque se pone así.
-----------------------------------------------------------------------
FOR /L %%X in (1,1,%Word_Middle%) DO (Call Set "Compare_B_REVERSED=%%Compare_B_REVERSED%%%%Compare_B:~-%%X,1%%")
De esta linea llego a entender, que como en el caso de un palindromo el contenido de la variable es texto se pone For/L, en el caso del capicua se pondria For (sin /L, verdad?) aparte de eso %%X in (1,1,%Word_Middle%), no seria para que empieze a contar desde el digito o letra 0 así: %%X in (0,1,%Word_Middle%), entiendo que este bucle es para que el script cuente el numero de letras o numeros que hay hasta la mitad del contenido del numero o texto introducido por el usuario..
Por ultimo en esta linea me pierdo del todo:
Call Set "Compare_B_REVERSED=%%Compare_B_REVERSED%%%%Compare_B:~-%%X,1%%")
No entiendo si abres una nueva variable "Compare_B_REVERSED"= ....  porque se vuelve a poner esa variable con doble % y seguido con otro doble %..Compare_B:~-%%X,1%%" .

Me gustaria entender el codigo para no tener que estar preguntando a cada rato y hacerlo por mi mismo en futuros ejercicios.

Siento ser tan pesado. Gracias por ayudarme.

#10
Scripting / Ayuda con dudas de programacion batch
27 Febrero 2013, 21:46 PM
Hola, alguien seria tan amable de decirme como puedo hacer para comparar una cadena numerica sin limite de longitud, los x primeros numeros con los x ultimos numeros.

Necesito realizar un programa que me diga si un numero introducido por un usuario es capicua o no y no doy con el script necesario para que me funcione y ya estoy desesperado.

He mirado mil foros y mil tutoriales de batch pero no consigo dar con la solucion.

Alquien me puede ayudar por favor?. Gracias.