Page 1 sur 1
Trouver l'element le plus frequent dans une liste
Publié : ven. 06/juil./2007 7:46
par Yves Rouquier
Bonjour,
Tout est dans le titre !
Dans mon cas j'ais une liste de mots et j'aimerai trouver celui qui
reviens le plus souvent.
Publié : ven. 06/juil./2007 7:56
par lionel_om
Tu recrée un seconde liste où tu vas compter les éléments et les ajouter:
Code : Tout sélectionner
Structure CountElement_String
nom.s
count.l
EndStructure
Procedure.s GetMostFrequentElement(lst.s())
NewList count.CountElement_String()
ForEach lst()
trouve = #False
ResetList(count())
While trouve = #False And NextElement(count())
If count()\nom = lst()
trouve = #True
EndIf
Wend
If trouve
count()\count + 1
Else
AddElement(count())
count()\nom = lst()
count()\count = 1
EndIf
Next
SortStructuredList(count(), 1, OffsetOf(CountElement_String\count), #PB_Sort_Long)
retour$ = ""
If CountList(count())
SelectElement(count(), 0)
retour$ = count()\nom
Debug count()\count
EndIf
ClearList(count())
ProcedureReturn retour$
EndProcedure
NewList elt.s()
AddElement(elt()) : elt() = "coucou"
AddElement(elt()) : elt() = "salut"
AddElement(elt()) : elt() = "coucou"
AddElement(elt()) : elt() = "ca va ?"
AddElement(elt()) : elt() = "coucou"
AddElement(elt()) : elt() = "test"
AddElement(elt()) : elt() = "test2"
AddElement(elt()) : elt() = "test"
AddElement(elt()) : elt() = "coucou"
AddElement(elt()) : elt() = "test2"
AddElement(elt()) : elt() = "test"
Debug GetMostFrequentElement(elt())
Lio

Publié : ven. 06/juil./2007 8:07
par Yves Rouquier
Merci pour cette reponce super rapide !
Publié : ven. 06/juil./2007 9:43
par brossden
Une autre façcon de faire peut être un peu plus rapide pour de grosse liste d'éléments :
Code : Tout sélectionner
Structure Element
nbr.l
nom.s
EndStructure
NewList elt.s()
AddElement(elt()) : elt() = "coucou"
AddElement(elt()) : elt() = "salut"
AddElement(elt()) : elt() = "coucou"
AddElement(elt()) : elt() = "ca va ?"
AddElement(elt()) : elt() = "coucou"
AddElement(elt()) : elt() = "test"
AddElement(elt()) : elt() = "test2"
AddElement(elt()) : elt() = "test"
AddElement(elt()) : elt() = "coucou"
AddElement(elt()) : elt() = "test2"
AddElement(elt()) : elt() = "test"
SortList(elt(),1)
NewList nbr.Element()
FirstElement(elt())
AddElement(nbr.Element())
nbr.Element()\nbr = 0
nbr.Element()\nom = elt()
ForEach elt()
If nbr.Element()\nom = elt()
nbr.Element()\nbr + 1
Else
AddElement(nbr.Element())
nbr.Element()\nom = elt()
nbr.Element()\nbr = 1
EndIf
Next
SortStructuredList(nbr.Element(),1,0,#PB_Sort_Long)
ForEach nbr.Element()
Debug nbr.Element()\nom+" "+Str(nbr.Element()\nbr)
Next
Publié : ven. 06/juil./2007 12:01
par comtois