Pergunta
Alexandre Lago · Jun. 21, 2022

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
2
0 102
Discussão (3)2
Entre ou crie uma conta para continuar

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! :-)  

MAIORPALAVRA ;Verifica qual é a maior palavra da frase
 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