contar numero de veces que sale la vocal a en una variable (batch)

Iniciado por alberto3_3, 2 Julio 2015, 19:18 PM

0 Miembros y 1 Visitante están viendo este tema.

alberto3_3

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

engel lex

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

alberto3_3

#2
Código (DOS) [Seleccionar]

@echo off
setlocal enabledelayedexpansion
:inicio
cls
set /p frase=Escribe una frase ?
if "%frase%" EQU "" goto inicio
set /a contador=0
for /l %%a in (0,1,1000) do (

)
:salida
echo La frase %frase% tiene %contador% letras a.
pause>nul

Eleкtro

#3
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 (ini) [Seleccionar]
@Echo OFF & Setlocal EnableDelayedExpansion

Set    "finalizer=Ç"
Set /A "mayusCount=0"
Set /A "minusCount=0"

Echo: Type any string...
Set /P "str=>> "

Set "str=%str%%finalizer%"

For /L %%c In (0, 1, 99998) Do (
Set "char=!str:~%%c,1!"
If "!char!" EQU "A" (Set /A "mayusCount+=1")
If "!char!" EQU "a" (Set /A "minusCount+=1")
If "!char!" EQU "%finalizer%" (Goto :Break)
<Nul set /P "char=!char!"
)

:Break
Echo+ | More
Echo: "A" count: %mayusCount%
Echo: "a" count: %minusCount%

Pause&Exit /B 0


Saludos








alberto3_3

Gracias por la respuesta, al final lo hice con un contador común para las letras mayúsculas y minúsculas,quedando asi:


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