Basicamente se pide una palabra, se pone la cadena de forma inversa y se compara con la primera pedida al usuario.
@echo off
if exist "file.txt" (del /f /q "file.txt")
setlocal enabledelayedexpansion
:code
set /p "cadena=Cadena : "
if not defined cadena (goto:code)
set "cadena_=%cadena%"
set /a "longitud-=1"
:bucle
set "cadena=%cadena:~1%"
set /a "longitud+=1"
if defined cadena goto:bucle
for /l %%_ in (%longitud%=-1=0) do <nul set /p "=!cadena_:~%%_,1!" >> "file.txt"
for /f "tokens=*" %%_ in (file.txt) do (
if /i "%cadena_%"=="%%_" (echo.Palindrome) else (echo.No palindrome)
)
pause>nul 2>&1
exit /b 0
Salida:
C:\>este
Cadena : seres
Palindrome
C:\>este
Cadena : algo
No palindrome
C:\>este
Cadena : ana
Palindrome
C:\>este
Cadena : Lalo
No palindrome
C:\>este
Cadena : arenero
No palindrome
C:\>este
Cadena : arenera
Palindrome
C:\>
problema con palrabas multiples palindomes =P
anita lava la tina
es una frase palindome (?
y me tira error (?
un saludo :P
Lamentablemente solo funciona con 1 sola palabra, luego veo si lo soluciono.
Gracias por probar el código.
He actualizado el código, ahora funciona con frases :
@echo off
if exist "file.txt" (del /f /q "file.txt")
setlocal enabledelayedexpansion
:code
set /p "cadena=Cadena : "
if not defined cadena (goto:code)
set "cadena=%cadena: =%"
set "cadena_=%cadena%"
set /a "longitud-=1"
:bucle
set "cadena=%cadena:~1%"
set /a "longitud+=1"
if defined cadena goto:bucle
for /l %%_ in (%longitud%=-1=0) do <nul set /p "=!cadena_:~%%_,1!" >> "file.txt"
for /f "tokens=*" %%_ in (file.txt) do (
if /i "%cadena_%"=="%%_" (echo.Palindrome) else (echo.No palindrome)
)
pause>nul 2>&1
exit /b 0
Salida:
Cadena : anita lava la tina
Palindrome
Cadena : la ruta nos aporto otro paso natural
Palindrome
Si quieren ahorra lineas dejenlo asi:
@echo off
if exist "file.txt" (del /f /q "file.txt")
setlocal enabledelayedexpansion
:code
set /p "cadena=Cadena : "
if not defined cadena (goto:code)
set "cadena=%cadena: =%"
set "cadena_=%cadena%"
set /a "longitud-=1"
:bucle
set "cadena=%cadena:~1%"
set /a "longitud+=1"
if defined cadena goto:bucle
for /l %%_ in (%longitud%=-1=0) do <nul set /p "=!cadena_:~%%_,1!" >> "file.txt"
type "file.txt" | find /i "%cadena_%" > nul 2>&1 && echo.Palindrome || echo.No palindrome
pause>nul 2>&1
exit /b 0
adivina ya te opina ya ni miles origina ya ni cetro me domina ya ni monarcas a repaso ni mulato carreta acaso nicotina ya ni cita vecino anima cocina pedazo gallina cedazo terso nos retoza de canilla goza de panico camina onice vaticina ya ni tocino saca a terracota luminosa pera sacra nomina y animo de mortecina ya ni giros elimina ya ni poeta ya ni vida
Palindromo :P
jajaja
buena esa :P
un saludo