Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: alberto3_3 en 2 Julio 2015, 19:18 pm



Título: contar numero de veces que sale la vocal a en una variable (batch)
Publicado por: alberto3_3 en 2 Julio 2015, 19:18 pm
Hola a todos.

Tengo que hacer un script que pida al usuario una frase y cuente el numero de veces que sale la a en esa frase tanto en mayúsculas como en minúsculas y hasta ahora va bien pero no me sale la parte de contar la letra a en la variable, para contar usaría un contador, lo que no se es como hacer la comparación carácter a carácter de la frase y si hay "a" que agregue +1 al contador.

Alguna idea?

Gracias por adelantado!  ;D


Título: Re: contar numero de veces que sale la vocal a en una variable (batch)
Publicado por: engel lex en 2 Julio 2015, 19:19 pm
muestra tu código


Título: Re: contar numero de veces que sale la vocal a en una variable (batch)
Publicado por: alberto3_3 en 2 Julio 2015, 19:46 pm
Código
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. :inicio
  4. cls
  5. set /p frase=Escribe una frase ?
  6. if "%frase%" EQU "" goto inicio
  7. set /a contador=0
  8. for /l %%a in (0,1,1000) do (
  9.  
  10. )
  11. :salida
  12. echo La frase %frase% tiene %contador% letras a.
  13. pause>nul


Título: Re: contar numero de veces que sale la vocal a en una variable (batch)
Publicado por: Eleкtro en 2 Julio 2015, 20:09 pm
Batch es ridiculamente limitado, no es posible una iteración de caracteres ya que no existe ese tipo de loop, entonces, debes idear técnicas alternativas para llevar a cabo ese tipo de tarea, por ejemplo con un un For range (For /L) substrayendo cada caracter del string y defininendo un terminador de string, es decir, hay que añadirle un caracter especial al final del string para saber cuando salir de la iteración, al encontrar ese caracter especial.

Ejemplo:
Código
  1. @Echo OFF & Setlocal EnableDelayedExpansion
  2.  
  3. Set    "finalizer=Ç"
  4. Set /A "mayusCount=0"
  5. Set /A "minusCount=0"
  6.  
  7. Echo: Type any string...
  8. Set /P "str=>> "
  9.  
  10. Set "str=%str%%finalizer%"
  11.  
  12. For /L %%c In (0, 1, 99998) Do (
  13. Set "char=!str:~%%c,1!"
  14. If "!char!" EQU "A" (Set /A "mayusCount+=1")
  15. If "!char!" EQU "a" (Set /A "minusCount+=1")
  16. If "!char!" EQU "%finalizer%" (Goto :Break)
  17. <Nul set /P "char=!char!"
  18. )
  19.  
  20. :Break
  21. Echo+ | More
  22. Echo: "A" count: %mayusCount%
  23. Echo: "a" count: %minusCount%
  24.  
  25. Pause&Exit /B 0

Saludos


Título: Re: contar numero de veces que sale la vocal a en una variable (batch)
Publicado por: alberto3_3 en 6 Julio 2015, 17:34 pm
Gracias por la respuesta, al final lo hice con un contador común para las letras mayúsculas y minúsculas,quedando asi:

Código:
setlocal enabledelayedexpansion
@echo off
:volver
cls
set /p frase=Escribe una frase :
if "%frase%" EQU "" goto volver
set /a contador=0
for /l %%a in (0,1,10000) do (
if "!frase:~%%a,1!" EQU "" goto salida
if "!frase:~%%a,1!" EQU "a" (set /a contador=!contador!+1)
if "!frase:~%%a,1!" EQU "A" (set /a contador=!contador!+1)
)
:salida
echo la frase %frase% tiene %contador% letras a.
pause>nul