Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1835 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  [ VB6 ] Problème de doublons [ résolu ]

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[ VB6 ] Problème de doublons [ résolu ]

n°1115789
amsterdam
Posté le 10-06-2005 à 14:54:25  profilanswer
 

Bonjour.
Voici un bout de code qui me sert à mélanger les valeurs contenues dans un tableau.


v0 = UBound(tableau_mots) - LBound(tableau_mots)
 
 
For i = LBound(tableau_mots) To UBound(tableau_mots)
  v1 = Int(Rnd() * v0 + LBound(tableau_mots))
  v2 = Int(Rnd() * v0 + LBound(tableau_mots))
  v3 = tableau_mots(v2)
  tableau_mots(v2) = tableau_mots(v1)
  tableau_mots(v1) = v3


 
Je n'ai qu'un problème, c'est que le mot qui se trouve en première place dans mon tableau avant le mélange se retrouve régulièrement deux fois après le brassage.
Je pensai que ça pouvait être lié à " option base 1 " mais à priori non.
 
Si qqun avait une idée...
Merci d'avance.


Message édité par amsterdam le 11-06-2005 à 18:46:40
mood
Publicité
Posté le 10-06-2005 à 14:54:25  profilanswer
 

n°1115963
gfa
Posté le 10-06-2005 à 16:46:02  profilanswer
 

amsterdam a écrit :

Bonjour.
Voici un bout de code qui me sert à mélanger les valeurs contenues dans un tableau.


v0 = UBound(tableau_mots) - LBound(tableau_mots)
 
 
For i = LBound(tableau_mots) To UBound(tableau_mots)
  v1 = Rnd() * v0 + LBound(tableau_mots)
  v2 = Rnd() * v0 + LBound(tableau_mots)
  v3 = tableau_mots(v2)
  tableau_mots(v2) = tableau_mots(v1)
  tableau_mots(v1) = v3


 
Je n'ai qu'un problème, c'est que le mot qui se trouve en première place dans mon tableau avant le mélange se retrouve régulièrement deux fois après le brassage.
Je pensai que ça pouvait être lié à " option base 1 " mais à priori non.
 
Si qqun avait une idée...
Merci d'avance.


Salut,
 
Bon, à voir il semble qu'avec les fonctions Randomize et Rnd tu n'arrives pas à faire tirer à VB une fois et une seule fois les chiffres d'une série...
 
Si tu te souviens de ton précédent Post, il y avait une remarque de dahlo:

Citation :

l'essentiel est dans la dernière boucle Do...


 
Je ne peux donc que confirmer sa remarque... Et si tu te souviens bien, sa boucle Do fait:

Code :
  1. Do
  2.   MyValue = Int((UBound(MonTabl, 1) * Rnd))
  3. Loop While MonTabl(MyValue) <> ""


 
Voilà... il ne te reste plus qu'à adapter tout ça pour ton code :)
 
A+ et bon week-end


Message édité par gfa le 10-06-2005 à 16:55:45
n°1115996
amsterdam
Posté le 10-06-2005 à 16:56:22  profilanswer
 

Oui mais pourquoi dans une phrase du genre " je suis une grosse quiche en prog  " c'est toujours le "je" qui apparait deux fois et jamais un des autres mots ?
Sinon la méthode bourrin va consister à comparer si v1 et v2 sont identiques avant de les inverser mais bon...... :/

n°1115998
amsterdam
Posté le 10-06-2005 à 16:57:29  profilanswer
 

Ok je vais regarder çà. :hello:

n°1116599
AlainTech
Pas trouvé? Cherche encore!
Posté le 11-06-2005 à 13:33:43  profilanswer
 

Je viens de tester et je n'ai pas ton problème.
Voici le code que j'ai utilisé:

  Dim i As Integer
  Dim tableau_mots() As Variant
  Dim v0 As Integer
  Dim v1 As Integer
  Dim v2 As Integer
  Dim v3 As String
   
  tableau_mots = Array("je", "suis", "une", "grosse", "quiche", "en", "prog" )
  v0 = UBound(tableau_mots) - LBound(tableau_mots)
   
  For i = LBound(tableau_mots) To UBound(tableau_mots)
    v1 = Int(Rnd() * v0 + LBound(tableau_mots))
    v2 = Int(Rnd() * v0 + LBound(tableau_mots))
    v3 = tableau_mots(v2)
    tableau_mots(v2) = tableau_mots(v1)
    tableau_mots(v1) = v3
  Next i


Je ne serais pas étonné que le problème vienne du contenu du tableau.


Message édité par AlainTech le 11-06-2005 à 13:34:32

---------------
Si on vous donne une info qui marche, DITES-LE!!!! ------ Si vous trouvez seul, AUSSI, votre solution peut servir à d'autres! ------ Je dois la majorité de mes connaissances à mes erreurs!
n°1116760
amsterdam
Posté le 11-06-2005 à 18:46:05  profilanswer
 

Nan en fait il vanait de la phrase que j'avait modifiée en cours de route et qui contenait 2 "e" mais j'ai eu trop honte de venir le dire quand je m'en suis aperçu hier soir. :d
 [:nowad]  [:nowad]  [:nowad]  
Comme quoi je suis vraiment une grosse quiche... [:burtonsnowboard]  
Mais merci quand même de m'avoir aidé.

n°1116772
AlainTech
Pas trouvé? Cherche encore!
Posté le 11-06-2005 à 18:58:07  profilanswer
 

Y a pas de honte à avoir.
On s'est tous plantés sur des conneries.
Voir ma signature. ;)


---------------
Si on vous donne une info qui marche, DITES-LE!!!! ------ Si vous trouvez seul, AUSSI, votre solution peut servir à d'autres! ------ Je dois la majorité de mes connaissances à mes erreurs!
n°1116782
amsterdam
Posté le 11-06-2005 à 19:15:28  profilanswer
 

Ok. :)
De toute façon le prochain problème ne saurait tarder :lol:.
Mais je cherche encore un peu tout seul de mon côté et si je ne trouve pas je viens ici.  :hello:


Message édité par amsterdam le 11-06-2005 à 19:15:44

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  [ VB6 ] Problème de doublons [ résolu ]

 

Sujets relatifs
Problème Hauteur en %problème de Date lorsque l'intervalle est à cheval sur 2 mois...
probleme de conversionProbleme de cache
Grave probleme en Java, EclipseGarder un login d'une session à l'autre? (résolu)
[résolu]Connaître la RAM disponibleProbleme avec fonction include
[VBS][resolu] Lancer .BAT avec argument ?[ JEXCEL/JXL] Problème lors de la création d'une feuille (sheet)
Plus de sujets relatifs à : [ VB6 ] Problème de doublons [ résolu ]


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR