Nombre de mot en double

cedrigoler Messages postés 35 Date d'inscription mercredi 17 juillet 2002 Statut Membre Dernière intervention 6 mai 2005 - 30 juin 2004 à 14:19
cs_dragon Messages postés 2336 Date d'inscription samedi 14 juillet 2001 Statut Membre Dernière intervention 5 mai 2009 - 5 juil. 2004 à 16:53
Bonjour !
J'ai un text qui à par exemle pour valeur "oui oui non oui non oui non non"
J'ai mis chacun de ces mots dans un tableau de cette manière : tabltxt = Split(txt, " ")
Cela est peut-être un bon point de départ pour pouvoir maintenant avoir (dans un tableau ou autre format) le nombre de oui et le nombre de non qu'il contient (ou tout autre mot). Ce que je souhaite surtout obtenir c'est le mot qui apparait le + de fois. Comme s'y prendre ? %-6
Merci!

13 réponses

cedrigoler Messages postés 35 Date d'inscription mercredi 17 juillet 2002 Statut Membre Dernière intervention 6 mai 2005
30 juin 2004 à 14:24
pour aider à me répondre je rappelle que UBound(tabltxt) renvoie le nombre de d'élement present dans le tableau (-1 car le tableau commence à 0). Cela pour utiliser une boucle du style For i = 0 To UBound(tabltxt)
0
cs_dragon Messages postés 2336 Date d'inscription samedi 14 juillet 2001 Statut Membre Dernière intervention 5 mai 2009 6
30 juin 2004 à 14:35
moi, ce que je ferait c'est un type qui serait un string avec un integer

ensuite de je créerais comme un tableau de longueur non défini pour lui faire un redim -1

ensuite a chaque mot de ton tableau je vérifierais s'il s,y trouve pas dasn dans le nouveau tableau, si oui, faire son chiffre + 1, sinon redim preserve tableau(ubound + 1) et ajouter le nouveau texte et le chiffre 1

après avoir fini de bouclé, tu va te retrouver avec un tableau qui contient tout les mots avec leur nombre de fois que chaque mot se retrouve, il te reste plus qu'a trouver celui qui a le nombre le plus élevé ou le trier en ordre croissant ou décroissant
0
cs_ITALIA Messages postés 2169 Date d'inscription vendredi 20 avril 2001 Statut Membre Dernière intervention 30 juin 2009 9
30 juin 2004 à 14:37
Plus FAcilement

Dim NON as integer
DimNON as integer

For i = 1 To Len(Text1) If Mid(Text1, i, 3) "OUI" Then OUI OUI + 1 If Mid(Text1, i, 3) "NON" Then NON NON + 1
Next

ca te va ??

It@li@
0
cs_dragon Messages postés 2336 Date d'inscription samedi 14 juillet 2001 Statut Membre Dernière intervention 5 mai 2009 6
30 juin 2004 à 14:53
en effait, sauf faut que les mot soit que OUI ou NON. si ton texte se trouve a être 100% des OUI et NON, ITALIA est plus rapide. Si par contre tu peut retrouver n'importe quoi comme texte, là prend le miens
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_ITALIA Messages postés 2169 Date d'inscription vendredi 20 avril 2001 Statut Membre Dernière intervention 30 juin 2009 9
30 juin 2004 à 15:12
D'aprés sa Question :

J'ai un text qui à par exemle pour valeur "oui oui non oui non oui non non"

Ca doit être le Cas
Par contre Excuse Petite Erreur de Frappe :

Dim OUI as integer
Dim NON as integer

It@li@
0
cs_dragon Messages postés 2336 Date d'inscription samedi 14 juillet 2001 Statut Membre Dernière intervention 5 mai 2009 6
30 juin 2004 à 16:20
miweux vaut donner les 2 possibilité de réponse, et au cas que quelqu'un d,autre tombe sur le post, ben il aura les 2 soluton :-)
0
cedrigoler Messages postés 35 Date d'inscription mercredi 17 juillet 2002 Statut Membre Dernière intervention 6 mai 2005
30 juin 2004 à 20:28
effectivement je ne suis pas censé savoir les mots qu'il contient (cf " (ou tout autre mot). " de mon premier post)
Par contre Italia je ne comprend pas ce qu'est un " type qui serait un string avec un integer " Ca donne quoi en VB ?
0
cedrigoler Messages postés 35 Date d'inscription mercredi 17 juillet 2002 Statut Membre Dernière intervention 6 mai 2005
30 juin 2004 à 20:45
heu... excusez moi ! Je posais ma question à Dragon ! Mais les autres peuvent aussi m'expliquer lol
0
cs_dragon Messages postés 2336 Date d'inscription samedi 14 juillet 2001 Statut Membre Dernière intervention 5 mai 2009 6
30 juin 2004 à 20:48
hey ho, c,est moi qui a dit ça lol joke

private type nbFoisMots
mot as string
nombre as integer
end type

et dans ton code de recherche

dim tableau() as nbFoisMots
0
cs_dragon Messages postés 2336 Date d'inscription samedi 14 juillet 2001 Statut Membre Dernière intervention 5 mai 2009 6
30 juin 2004 à 20:57
lol, tu normal que la réponse arrive avant mon post lol petti bug du site ici lol ou c'est juste moi qui voit cet ordre là ???
0
cedrigoler Messages postés 35 Date d'inscription mercredi 17 juillet 2002 Statut Membre Dernière intervention 6 mai 2005
30 juin 2004 à 22:59
lol j'ai envoyé la correcton de mon erreur juste (20:45:12)
après avoir posté lerreur et regarde les heures et réponse est à 20:48:42 mais apparement le site est affreusement lent ya comme des tits pb !

Sinon je n'arrive vraiment pas à saisir cette histoire de type string/integer. Qd tu dis "ajouter le nouveau texte et le chiffre 1" comment j'utilise ce nouveau type pour lutiliser avec le tableau ? Il faut qu'il ait deux colonnes ? Aussi je ne vois le but du redim-1 (prk reduire sa taille ? erreur de frappe pê, redim+1 pluto, non ? par contre je comprend bien le redim preserve tableau(ubound + 1) )
Voila MERCI de ton aide en tout cas :)
0
cedrigoler Messages postés 35 Date d'inscription mercredi 17 juillet 2002 Statut Membre Dernière intervention 6 mai 2005
1 juil. 2004 à 12:25
J'ai essayé de le faire de cette maniere :
temp_tabl c'est le tableau avec tous les mots
tempond c'est censé etre un tableau à deux colonnes, la premiere avec un mot, la deuxieme sur la meme ligne le nombre de mot rencontré.
J'utilise CStr et CInt (conversion String<>Integer) pour permettre d'ajouter 1 au chiffre present dans la deuxieme colonne qui est une string.
Le test And l = UBound(tempond) permet de savoir si on a parcouru tout le tableau et donc que le mot n'y est pas, donc l'ajouter.
L'instruction tempond(UBound(tempond) + 1, 1) permet de le redimensionner pour ajouter un nouveau mot. MAIS c'est ici qu'il y a un pb , il me dit que l'indice est en dehors de la plage (Ubound(tempond) est egal a 0 qd ça bug)

'----- Le code -----
ReDim tempond(0, 1) 'pour eviter d'avoir un tableau vide au départ.

For k = 1 To UBound(temp_tabl)
For l = 0 To UBound(tempond)
If temp_tabl(k) tempond(l, 0) Then tempond(l, 1) CStr(CInt(tempond(l, 1)) + 1)
If temp_tabl(k) <> tempond(l, 0) And l = UBound(tempond) Then
ReDim Preserve tempond(UBound(tempond) + 1, 1)
tempond(UBound(tempond), 0) = temp_tabl(k)
tempond(UBound(tempond), 1) = 1
End If

Next l
Next k
'----Fin du code ----
0
cs_dragon Messages postés 2336 Date d'inscription samedi 14 juillet 2001 Statut Membre Dernière intervention 5 mai 2009 6
5 juil. 2004 à 16:53
ça devrait marcher, mais c'est pas tester

private type nbFoisMots
mot as string
nombre as integer
end type

public function nbFroi(texte() as string)
dim tableau() as nbFoisMots 
dim i as integer,  j as integer
dim trouver as  boolean
redim tableau(-1)

for i = lbound(texte) to ubound(texte)
trouver = false
for j = lbound(tableau) to ubound(tableau)
if tableau(j).mot = texte(i) then
trouver = true
tableau(j).nombre = tableau(j).nombre + 1
end if
next j
if not trouver then
redim preserve tableau(ubound(tableau) + 1)
tableau(ubound(tableau)).mot = texte(i)
tableau(ubound(tableau)).nombre  = 1
end if
next i

end function
0
Rejoignez-nous