Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: viperx666 en 8 Marzo 2013, 13:14 pm



Título: Problema batch
Publicado por: viperx666 en 8 Marzo 2013, 13:14 pm
Hola, estoy haciendo un trabajo de la universidad y necesito resolver unas dudas.
Me han mandado 45 ejercicios y solo me faltan un par de ejercicios que no se ni como empezar y los necesito para el Martes. Bueno aqui os los explico:

El primero me dice que dada una palabra de 5 caracteres maximos, comprobar si es un palindromo, osea que se lee igual al reves.

El segundo es dada una palabra, que nos diga el programa el numero de A's de esa palabra/cadena, sabiendo que la palabra debe contener un maximo de 5 caracteres.

Espero que me resolvais esta duda cuanto antes, muchas gracias.

Saludos.


Título: Re: Problema batch
Publicado por: Almapa en 10 Marzo 2013, 21:59 pm
Aquí tienes unas posibles soluciones hechas rápidamente, supongo que serán fácilmente optimizables.
Ej1:

Código:
@echo off
setlocal enabledelayedexpansion
goto :inicio

:inicio
echo ________________________________________________________________________________
echo ________________________________________________________________________________
echo Inserta la palabra:
set /p var=
set cuenta=0
set contador=0
set var1=%var%.
goto :contarcaracteres

:contarcaracteres
set caracter=!var1:~%cuenta%,1!
if %caracter%==. (set cuenta=0&& set /a limit=%contador%/2-1&& goto :comprobar)
set /a contador=%contador%+1
set /a cuenta=%cuenta%+1
goto :contarcaracteres

:comprobar
if %cuenta% GTR %limit% (Echo Si es un palindromo && goto :inicio)
set /a num=%contador%-%cuenta%-1
set carac1=!var:~%cuenta%,1!
set carac2=!var:~%num%,1!
if %carac1%==%carac2% (set /a cuenta=%cuenta%+1&& goto :comprobar) else (Echo No es un palindromo && goto :inicio)




Ej2:

@echo off
setlocal enabledelayedexpansion
goto :inicio

:inicio
echo ________________________________________________________________________________
echo ________________________________________________________________________________
set cuenta=0
set contador=0
set var=0
echo Inserta la palabra:
set /p var=
set var1=%var%.
goto :contar

:contar
set caracter=!var1:~%cuenta%,1!
if %caracter%==A (set /a contador=%contador%+1)
if %caracter%==a (set /a contador=%contador%+1)
if %caracter%==. (echo La palabra tiene %contador% caracter/es a && goto :inicio)
set /a cuenta=%cuenta%+1
goto :contar



[MOD]: Usa el botón para insertar códigos.


Título: Re: Problema batch
Publicado por: Eleкtro en 11 Marzo 2013, 03:15 am
Esto lo solucioné hace poco, usa el buscador:

http://foro.elhacker.net/programacion_general/ayuda_para_realizar_2_programas_en_batch-t383910.0.html

Saludos


Título: Re: Problema batch
Publicado por: viperx666 en 11 Marzo 2013, 10:33 am
Gracias Almapa pero el programa no funciona, se queda en un bucle infinitamente

EleKtro H@cker ya he leido el otro tema y funciona todo bien, pero podrias explicarme que hace cada linea? ya que me pierdo  y debo explicar paso a paso cada linea al entregar el trabajo

Saludos


Título: Re: Problema batch
Publicado por: Eleкtro en 11 Marzo 2013, 12:00 pm
@viperx666
El script de Almapa no te funcionaba porque hay un error en el foro al postear códigos que usan el caracter de exclamación "!" y usar la etiqueta DOS de GeShi, ha sido error mío, ya he modificado de nuevo el formato del código de Almapa, ahora debería funcionar.

Sobre lo de explicarte cada línea... pues sincéramente no lo voy a hacer por una sencilla razón, y es da la sensación de que no quieres aprender y que sólo quieres tener una chuleta preparada, te lo han dado todo hecho, ahora puedes esforzarte un poco en buscar información acerca de cada comando usado en el script...

Bueno, aquí tienes la epxlicación: http://foro.elhacker.net/empty-t384295.0.html
(Si hubiera sabido que ese otro usuario buscaba una chuleta para hacer el mismo trabajo no habría explicado nada xD)

Más info:
> (Tema bloqueado hasta finalizar el tuto) Tutorial extendido de aprendizaje Batch (http://foro.elhacker.net/empty-t375135.0.html)
> http://ss64.com/nt/syntax.html

Un saludo