- Fórum
- Protheus/Microsiga/Totvs
- AdvPL (Advanced Protheus Language)
- Dúvidas Gerais
- Exercício de contar as vogais e as consoantes de uma palavra
×
Linguagem de Programação ADVPL
Perguntas Exercício de contar as vogais e as consoantes de uma palavra
- viniciusbsilva
- Autor do Tópico
- Desconectado
- Membro Júnior
Menos
Mais
- Postagens: 29
- Obrigados Recebidos: 0
8 anos 11 meses atrás #29710
por viniciusbsilva
Respondido por viniciusbsilva no tópico Exercício de contar as vogais e as consoantes de uma palavra
Agora você pode me ajudar?
Por favor Acessar ou Registrar para participar da conversa.
- lalberto
- Desconectado
- Administrador
Menos
Mais
- Postagens: 3676
- Obrigados Recebidos: 6
8 anos 11 meses atrás #29711
por lalberto
Luiz Alberto Vieira Alves
Proprietário
55 (12) 9 8256-5905 (Vivo)
www.3lsystems.com.br
www.masteradvpl.com.br
Respondido por lalberto no tópico Exercício de contar as vogais e as consoantes de uma palavra
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.
- viniciusbsilva
- Autor do Tópico
- Desconectado
- Membro Júnior
Menos
Mais
- Postagens: 29
- Obrigados Recebidos: 0
8 anos 11 meses atrás #29721
por viniciusbsilva
Respondido por viniciusbsilva no tópico Exercício de contar as vogais e as consoantes de uma palavra
Agora você pode me ajudar?
Por favor Acessar ou Registrar para participar da conversa.
- lalberto
- Desconectado
- Administrador
Menos
Mais
- Postagens: 3676
- Obrigados Recebidos: 6
8 anos 11 meses atrás #29722
por lalberto
Luiz Alberto Vieira Alves
Proprietário
55 (12) 9 8256-5905 (Vivo)
www.3lsystems.com.br
www.masteradvpl.com.br
Respondido por lalberto no tópico Exercício de contar as vogais e as consoantes de uma palavra
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.
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.
- viniciusbsilva
- Autor do Tópico
- Desconectado
- Membro Júnior
Menos
Mais
- Postagens: 29
- Obrigados Recebidos: 0
8 anos 11 meses atrás #29723
por viniciusbsilva
Respondido por viniciusbsilva no tópico Exercício de contar as vogais e as consoantes de uma palavra
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.
- kanaamlrr
- Desconectado
- Membro Platina
Menos
Mais
- Postagens: 1576
- Obrigados Recebidos: 4
- Fórum
- Protheus/Microsiga/Totvs
- AdvPL (Advanced Protheus Language)
- Dúvidas Gerais
- Exercício de contar as vogais e as consoantes de uma palavra
Tempo para a criação da página:0.140 segundos