Power Builder - como cuento las repetidas de una cadena

 
Vista:

como cuento las repetidas de una cadena

Publicado por Enid (1 intervención) el 05/07/2003 18:59:15
necesito saber como contar en una cadena la letra que más se repite y la cantidad de coincidencias, auxilio!!!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:como cuento las repetidas de una cadena

Publicado por Oscar (1178 intervenciones) el 06/07/2003 04:31:08
* 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
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Como cuento las repetidas de una cadena (mejorado)

Publicado por Oscar (1178 intervenciones) el 06/07/2003 19:24:14
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
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
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
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar