× Linguagem de Programação ADVPL

Perguntas Exercício de contar as vogais e as consoantes de uma palavra

Mais
8 anos 5 meses atrás #29710 por viniciusbsilva
Agora você pode me ajudar?

Por favor Acessar ou Registrar para participar da conversa.

Mais
8 anos 5 meses atrás #29711 por lalberto
Por enquanto veja se este código te ajuda, eu tinha a mil anos é em clipper.


001	/* Constantes globais do meu sistema. Coloque-as onde achar melhor.
002	   _g_SignSet = "!"+Chr(34)+"#$%&'()*+,-./:;<=>?@[\]^_`{|}~"
003	   _g_VogsSet = "AEIOU"
004	   _g_ConsSet = "BCDFGHJKLMNPQRSTVWXYZ"
005	*/
006	 
007	//**********************************************************
008	User function SyllabDiv(cOrign)
009	local aSylls  :=  {}
010	local cDitong := "AI.AO.AU.UA.EI.EU.IO.OE"
011	local cTriton := "AIA.UAI"
012	local cIndiv  := "CH.LH.NH.PN"
013	local lDiv    :=  .F.
014	local cTail
015	local i
016	local c
017	 
018	priva cSyll           // sílaba já separada
019	priva cWord := cOrign // a palavra original
020	 
021	if Len(cWord := AllTrim(cWord)) <= 3
022	   return {cWord}
023	end
024	 
025	// Padronizar a palavra, convertendo-a para maiúsculas,
026	// removendo acentos e caracteres especiais
027	cTail := ""
028	for i := 1 to Len(cWord)
029	    if SubStr(cWord,i,1) $ StrTran(_g_SignSet,"-")+" "
030	       cTail := SubStr(cWord,i)
031	       cWord := Left(cWord,i-1)
032	       exit
033	    end
034	next
035	cWord := AllTrim(Upper(DelAccents(cWord)))
036	cSyll := ""
037	 
038	while Len(cWord) > 0
039	   Attach()
040	   *
041	   if     Len(cWord) = 0
042	          lDiv := .T.
043	          *
044	   elseif Right(cSyll,1) $ _g_VogsSet
045	          if Left(cWord,1) $ _g_ConsSet
046	             lDiv := .T.
047	             if Len(cWord)=1
048	                Attach()
049	             else
050	                 if At(SubStr(cWord,1,2),cIndiv) = 0
051	                    if !(Left(cWord,1) $ "BCDFGPTV" .and. SubStr(cWord,2,1) $ "LR"       ) .and.;
052	                       ((Left(cWord,1) $ "LMNRS"    .and. SubStr(cWord,2,1) $ _g_ConsSet )  .or.;
053	                         SubStr(cWord,2,1) $ _g_ConsSet)
054	                         Attach()
055	                    end
056	                 end
057	             end
058	             if Left(cWord,1) = "S" .and. SubStr(cWord,2,1) $ _g_ConsSet
059	                Attach()
060	             end
061	          else
062	             if At(Right(cSyll,1)+Left(cWord,1),cDitong)=0 .and. At(Right(cSyll,1)+Left(cWord,2),cTriton)=0 .and.;
063	                Right(cSyll,1) == Left(cWord,1)
064	                lDiv := .T.
065	             end
066	          end
067	          *
068	   elseif Right(cSyll,1) $ _g_ConsSet
069	          if Len(aSylls)=0 .and. Len(cSyll)=1 .and. Left(cWord,1) $ _g_ConsSet
070	             Attach()
071	          end
072	   end
073	 
074	   // Formação definitiva da sílaba
075	   if lDiv
076	      lDiv := .F.
077	      AAdd(aSylls,cSyll)
078	      cSyll := ""
079	   end
080	end
081	 
082	// Recomposição da string, para recuperar a caixa, a
083	// acentuação original e os sinais suprimidos
084	if Len(aSylls) > 0
085	   aSylls[Len(aSylls)] += cTail
086	   *
087	   c := 0
088	   for i := 1 to Len(aSylls)
089	       for k := 1 to Len(aSylls[i])
090	           c ++
091	           aSylls[i] := Stuff(aSylls[i],k,1,SubStr(cOrign,c,1))
092	       next
093	   next
094	else
095	   AAdd(aSylls,cTail)
096	end
097	return aSylls
098	 
099	//**********************************************************
100	static function Attach()
101	cSyll += Left(cWord,1)   // a sílaba já formada
102	cWord := SubStr(cWord,2) // o resto da palavra
103	return nil

Luiz Alberto Vieira Alves
Proprietário
55 (12) 9 8256-5905 (Vivo)
www.3lsystems.com.br
www.masteradvpl.com.br

Por favor Acessar ou Registrar para participar da conversa.

Mais
8 anos 5 meses atrás #29721 por viniciusbsilva
Agora você pode me ajudar?

Por favor Acessar ou Registrar para participar da conversa.

Mais
8 anos 5 meses atrás #29722 por lalberto
Vinicios essa semana esta corrida pra mim, ainda não tive tempo de analisar sua rotina, a rotina que mandei não ajudou ?

esse fim de semana prometo que vou analisar com calma ok.

Luiz Alberto Vieira Alves
Proprietário
55 (12) 9 8256-5905 (Vivo)
www.3lsystems.com.br
www.masteradvpl.com.br

Por favor Acessar ou Registrar para participar da conversa.

Mais
8 anos 5 meses atrás #29723 por viniciusbsilva
Ajudou um pouco eu consegui da uma aprimorada, mas mesmo assim não deu o resultado que eu quero. Não há mais ninguém que possa me ajudar? Eu preciso urgente e não sei mais pra onde recorrer!

Por favor Acessar ou Registrar para participar da conversa.

Mais
8 anos 5 meses atrás #29724 por kanaamlrr
Coloque ai até onde você chegou e o que ficou faltando.

Por favor Acessar ou Registrar para participar da conversa.

Tempo para a criação da página:0.124 segundos
Joomla templates by a4joomla