Contar a palavra com maior número de caracteres
Olá, comecei a trabalhar com Caché a pouco, e estou em treinamento.
Me surgiu uma dúvida de uma determinada atividade, aonde a regra solicita que o usuário digite uma string, e selecione uma das opções listradas, e uma delas e informar a palavra com maior número de carácteres da string.
Já tentei de tudo, porém não consegui chegar a nenhuma conclusão.
Desde já agradeço
Product version: Caché 2012.1
Olá Alexandre,
Não entendi muito bem, mas, você já fez a contagem de caracteres da string que o usuário digitou? Se não de uma olhada na função $Length https://docs.intersystems.com/ens201815/csp/docbook/Doc.View.cls?KEY=RCO...
Oi Alexandre!
O que me veio em mente rapidamente foi criar um código que transforme a sua string/frase em uma lista de palavras para depois percorrer a lista contando o numero de letras de cada palavra da lista.
Algo assim:
Set frase = "Como contar a palavra com maior numero de caracteres"
#; cria uma lista da string com delimitador " " espaço
Set fraseList = $Listfromstring(frase," ")
#; percorre a lista e imprime a posição da palavra na frase (i), o tamanho da palavra ($length) e a palavra ($listget(fraseList,i))
For i=1:1:$Listlength(fraseList) w !,i_"- tamanho:"_$length($listget(fraseList,i))_"->"_$lg(fraseList,i)
O código acima pode ser executado no Terminal.
Mas se você somente desejar saber o maior tamanho, basta salvar o tamanho em uma variável comparando os tamanhos. Exemplo:
Set maiorTamanho=""
For i=1:1:$Listlength(fraseList) {
set tamanho=$length($listget(fraseList,i))
if tamanho>maiorTamanho {
set maiorTamanho=tamanho
set maiorPalavra=$listget(fraseList,i)
}
}
Write !,maiorPalavra_" - tamanho: "_maiorTamanho
Espero que ajude! :-)
Set Frase="O Cache da InterSystems é Imbativel"
Write !,"Frase : ",Frase,! ; Escreve
Set qp=$Length(Frase," ") ; Conta as palavras da frase
Set (qtl,mqtl)=0 ; Zera os contadores
For pal=1:1:qp { ; comando For
Set palavra=$Piece(Frase," ",pal) ; percorre as palavras
Set qtl=$L(palavra) ; Verifica tamanho da palavra
If qtl>mqtl Set mqtl=qtl,pi=pal ; Define a maior palavra
}
Write !,"A maior palavra da frase é ",$Piece(Frase," ",pi),! ; Escreve a maior palavra
;
; Crie um programa COS com os comandos acima e execute no terminal