* 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