elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Como proteger una cartera - billetera de Bitcoin


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  [BATCH] Donde falla este script. Alguien me puede ayudar?. Gracias.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [BATCH] Donde falla este script. Alguien me puede ayudar?. Gracias.  (Leído 3,856 veces)
legolas266

Desconectado Desconectado

Mensajes: 13


Ver Perfil
[BATCH] Donde falla este script. Alguien me puede ayudar?. Gracias.
« en: 14 Marzo 2013, 11:40 am »

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
  1. @Echo off
  2. setlocal enabledelayedexpansion
  3. title Ejercicio 9. Numeros Capicua
  4. set numero=""
  5. :comienzo
  6. echo ===========================================
  7. echo          Numero Capicua o no....
  8. echo ===========================================
  9. Set /P numero="Introduce un numero de 5 cifras "
  10. if %numero%=="" (
  11. goto error
  12. ) else (
  13. goto variables
  14. )
  15.  
  16. :variables
  17. set num1=%numero:~0,1%
  18. set num2=%numero:~1,1%
  19. set num3=%numero:~2,1%
  20. set num4=%numero:~3,1%
  21. set num5=%numero:~4,1%
  22. goto longitud
  23.  
  24. :longitud
  25. if !num5! gtr -1 (
  26. goto compara4
  27. )
  28. if !num4! gtr -1 (
  29. goto compara3
  30. )
  31. if !num3! gtr -1 (
  32. goto compara2
  33. )
  34. if !num2! gtr -1 (
  35. goto compara1
  36. )
  37. if !num1! gtr -1 (
  38. goto compara
  39. )
  40.  
  41. :compara
  42. echo El numero introducido es Capicua.
  43. goto fin
  44.  
  45. :compara1
  46. if !num1! equ !num2! (
  47. echo El numero introducido es Capicua.
  48. goto fin
  49. ) else (
  50. echo El numero introducido no es Capicua.
  51. goto fin
  52. )
  53. :compara2
  54. if !num1! equ !num3! (
  55. echo El numero introducido es Capicua.
  56. goto fin
  57. ) else (
  58. echo El numero introducido no es Capicua.
  59. goto fin
  60. )
  61.  
  62. :compara3
  63. if !num1! equ !num4! (
  64. if !num2! equ !num3! (
  65. echo El numero introducido es Capicua.
  66. goto fin
  67. )
  68. ) else (
  69. echo El numero introducido no es Capicua.
  70. goto fin
  71. )
  72.  
  73. :compara4
  74. if !num1! equ !num5! (
  75. if !num2! equ !num4! (
  76. echo El numero introducido es Capicua.
  77. goto fin
  78. )
  79. ) else (
  80. echo El numero introducido no es Capicua.
  81. goto fin
  82. )
  83.  
  84. :error
  85. echo ERROR! .No ha introducido ningun numero.
  86. goto comienzo
  87.  
  88. :fin
  89.  

Gracias a todos por su ayuda.


« Última modificación: 14 Marzo 2013, 13:28 pm por EleKtro H@cker » En línea

OmarHack


Desconectado Desconectado

Mensajes: 1.268


Ver Perfil
Re: Donde falla este script. Alguien me puede ayudar?. Gracias.
« Respuesta #1 en: 14 Marzo 2013, 11:46 am »

Edita el mensaje y pon el código en insertar código es el símbolo del asterisco o si no pon "
Código:
" al principio y "
" al final. Un saludo.


En línea

I like to test things.
legolas266

Desconectado Desconectado

Mensajes: 13


Ver Perfil
Re: Donde falla este script. Alguien me puede ayudar?. Gracias.
« Respuesta #2 en: 14 Marzo 2013, 12:05 pm »

Ok ya esta modificado el post, disculpad no sabia eso.
En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.709



Ver Perfil
Re: Donde falla este script. Alguien me puede ayudar?. Gracias.
« Respuesta #3 en: 14 Marzo 2013, 12:18 pm »

Que lío tienes montado en las condicionales, pero de entre todo, hay una cosa que resaltar con creces:

Código
  1. :longitud
  2. if !num5! gtr -1 (
  3. goto compara4
  4. )
  5. if !num4! gtr -1 (
  6. goto compara3
  7. etc...
  8. )

No entiendo la lógica que se te ha pasado por la cabeza para realizar esas comparaciones, porque en ninguno de los casos la cifra podrá ser negativa (-1), el número que obtienes del substring siempre será positivo, así que esas comparaciones ni son necesarias ni se que intentas conseguir con eso reálmente.

EDITO: Si de ese pretendías saber si la variable estaba vacía podrías haber hecho:
Código:
if "!num1!"=="" (Goto..)
if "!num2!"=="" (Goto...)
o
Código:
if not defined num1 (goto...)
if not defined num2 (goto...)

Véo que no te sirvió de nada el ejemplo que te puse en este post: http://foro.elhacker.net/scripting/ayuda_con_dudas_de_programacion_batch-t384295.0.html;msg1832789#msg1832789

Código
  1. @Echo OFF
  2.  
  3. REM By Elektro H@cker
  4.  
  5. :: Esperar el input del usuario
  6. Set /P "Word=Introduce una palabra >> "
  7.  
  8. :: Obtener la longitud del input
  9. (ECHO "%WORD%">"%TEMP%\Word.txt" & FOR %%# IN ("%TEMP%\Word.txt") DO (SET /A "Word_Length=%%~z# - 5"))
  10.  
  11. :: Obtener el punto de separación del string
  12. Set /A "Word_Middle=%Word_Length% / 2"
  13.  
  14. :: Setear las variables de las comparaciones
  15. Call Set "Compare_A=%%WORD:~0,%Word_Middle%%%"
  16. Call Set "Compare_B=%%WORD:~-%Word_Middle%%%"
  17.  
  18. :: Revertir la variable "Compare_B"
  19. FOR /L %%X in (1,1,%Word_Middle%) DO (Call Set "Compare_B_REVERSED=%%Compare_B_REVERSED%%%%Compare_B:~-%%X,1%%")
  20.  
  21. :: Comparar y mostrar el resultado
  22. IF "%Compare_A%" EQU "%Compare_B_REVERSED%" (
  23. Echo El string es palindromo.    | MORE
  24. ) ELSE (
  25. Echo El string no es palindromo. | MORE
  26. )
  27.  
  28. Pause&Exit



Bueno, aquí tienes algo mucho más sencillo siguiendo la línea de tu ejercicio:

Código
  1. @Echo off
  2. title Ejercicio 9. Numeros Capicua
  3.  
  4. :comienzo
  5. Set "numero="
  6. Cls
  7. echo ===========================================
  8. echo          Numero Capicua o no....
  9. echo ===========================================
  10. Set /P "numero=Introduce un numero menor de 5 cifras >> "
  11. if not defined numero (GOTO :error)
  12. if %numero% GTR 99999 (GOTO :error)
  13.  
  14. :longitud
  15. if %numero% LEQ     9 (Call :Comparar %numero:~0,1% %numero:~0,1%)
  16. if %numero% LEQ    99 (Call :Comparar %numero:~0,1% %numero:~1,1%)
  17. if %numero% LEQ   999 (Call :Comparar %numero:~0,1% %numero:~2,1%)
  18. if %numero% LEQ  9999 (Call :Comparar %numero:~0,1%%numero:~1,1% %numero:~3,1%%numero:~2,1%)
  19. if %numero% LEQ 99999 (Call :Comparar %numero:~0,1%%numero:~1,1% %numero:~4,1%%numero:~3,1%)
  20. GOTO :comienzo
  21.  
  22. :error
  23. echo ERROR! Numero incorrecto.
  24. goto :comienzo
  25.  
  26. :comparar                    
  27. if %1 equ %2 (echo El numero introducido es Capicua.) else (echo El numero introducido no es Capicua.)
  28. GOTO:comienzo

Saludos.
« Última modificación: 14 Marzo 2013, 12:26 pm por EleKtro H@cker » En línea


legolas266

Desconectado Desconectado

Mensajes: 13


Ver Perfil
Re: Donde falla este script. Alguien me puede ayudar?. Gracias.
« Respuesta #4 en: 14 Marzo 2013, 12:55 pm »

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.
En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.709



Ver Perfil
Re: Donde falla este script. Alguien me puede ayudar?. Gracias.
« Respuesta #5 en: 14 Marzo 2013, 13:28 pm »

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

Gracias una vez mas gracias por la ayuda.

Lo importante es que hayas entendido el code, y ahora ya sabes que puedes hacerlo de esa manera...

Para eso estamos :),
un saludo.
En línea


Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
por favor alguien me puede ayudar con estos ejercicios en c gracias..
Ejercicios
marineronaval 8 7,855 Último mensaje 31 Diciembre 2009, 02:34 am
por Og.
Alguien sabe donde se puede conseguir este fabuloso script?
Desarrollo Web
ENCUENTROSWEB 3 2,198 Último mensaje 26 Diciembre 2011, 23:54 pm
por ENCUENTROSWEB
[Bash] Alguien me dice donde falla donde me falla este codigo?
Scripting
legolas266 5 2,253 Último mensaje 4 Julio 2013, 15:01 pm
por MineHitex
¿Dónde falla este script para slide con jQuery? « 1 2 »
Desarrollo Web
Linton 11 4,559 Último mensaje 19 Marzo 2014, 07:52 am
por Linton
¿Alguien me puede ayudar a acabar este Script?
Scripting
JuniorPro 0 738 Último mensaje 16 Noviembre 2016, 13:51 pm
por JuniorPro
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines