* Creas una función que cuente las veces que se repite una letra en la cadena:
1. File/New/PB Object/Function
2. La funcion se llama f_cuenta_char y devuelve Integer, tiene dos argumentos:
string(as_cadena)
character(as_letra)
El script de la función es:
int li_pos
int ncuenta=0
li_pos = Pos (as_cadena, as_letra, 1)
do while li_pos > 0
ncuenta+=1
as_cadena = Left (as_cadena, li_pos - 1) + &
Right (as_cadena, Len (as_cadena) - li_pos)
li_pos = Pos (as_cadena, as_letra, 1)
loop
return ncuenta
* En tu ventana pegas los controles: sle_1, st_1y st_2
El script del botón es:
string ls_cadena,ls_letra,ls_letramasrepetida
Int li_cuenta,li_longitud,li_mayor,i
//Cadena a leer
ls_cadena=string(sle_1.text)
//Longitud de la cadena
li_longitud=Len(ls_cadena)
li_mayor=0
for i=1 to li_longitud
//Leemos letra por letra
ls_letra=Mid(ls_cadena,i,1)
//Contamos con la función, las veces que se repite la letra en la cadena
li_cuenta=f_cuenta_char(ls_cadena,ls_letra)
//Hallamos el número mayor y su correspondiente letra
If li_cuenta>li_mayor then
li_mayor=li_cuenta
ls_letramasrepetida=ls_letra
end if
Next
//Mostramos los resultados
st_1.Text=string(li_mayor)
st_2.text=string(ls_letramasrepetida)
Nota: Si dos letras se repiten en la misma cantidad, te muestra sólo de la primera. Ejemplo: nono, te muestra: 2 y n.
Valora esta respuesta
0
Comentar
Como cuento las repetidas de una cadena (mejorado)
Enid:
Si deseas que te muestre todas las letras que más se repiten (se ve fácil, pero dio trabajito ;-), modificá el script de tu botón:
* En tu ventana pegas los controles st_1 y lb_1.
El script del botón es:
string ls_cadena,ls_letra
Int li_cuenta,li_longitud,li_mayor,i
//Arrays
Int A[]
String B[]
//Cadena a leer
ls_cadena=string(sle_1.text)
//Longitud de la cadena
li_longitud=Len(ls_cadena)
li_mayor=0
for i=1 to li_longitud
//Leemos letra por letra
ls_letra=Mid(ls_cadena,i,1)
//Contamos las veces que se repite la letra en la cadena
li_cuenta=f_cuenta_char(ls_cadena,ls_letra)
//Hallamos el mayor
If li_cuenta>=li_mayor then
li_mayor=li_cuenta
end if
//Guardamos las cuentas en el array A, y sus repectivas letras en el array B
A[i]=li_cuenta
B[i]=ls_letra
Next
//Imprimimos el número mayor
st_1.Text=string(li_mayor)
//Imprimimos en un ListBox, las letras que tienen el número mayor
for i=1 to li_longitud
if A[i]=li_mayor then
lb_1.AddItem(string(B[i]))
end if
next
Nota:
* Las letras aparecen ordenados alfabeticamente en el lb_1
* Diferencia mayúsculas de minúsculas.
Algunos ejemplos de los resultados que arroja:
* Enid ----->1----->dEnic
* Programa-->2----->a a r r
Valora esta respuesta
0
Comentar
RE:como cuento las repetidas de una cadena
Publicado por hitler (1 intervención) el 12/10/2007 01:15:55
cuales son las funsiones de cadena de power builder