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

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  [VB6] tableau aléatoire [ résolu ]

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[VB6] tableau aléatoire [ résolu ]

n°1111752
amsterdam
Posté le 07-06-2005 à 19:35:15  profilanswer
 

Salut.
Voilà j'ai des données à transférer d'un fichier texte vers un tableau, en fait les différents mots d'une phrase.
Le problème est que j'y arrive bien tant qu'il faut que les données soient dans l'ordre mais je ne sais pas  comment faire pour placer ces mots dans mon tableau de façon aléatoire.
Si qqun avait une idée...
Merci d'avance. :)


Message édité par amsterdam le 09-06-2005 à 21:46:41
mood
Publicité
Posté le 07-06-2005 à 19:35:15  profilanswer
 

n°1114436
amsterdam
Posté le 09-06-2005 à 17:03:05  profilanswer
 

C'est bizarre...20 personnes ont visulisé mon topic mais aucune réflexion. :/
Si vous trouvez que mes explicatios ne sont pas claires n'hésitez pas à le dire. :d


Message édité par amsterdam le 09-06-2005 à 17:03:21
n°1114472
gfa
Posté le 09-06-2005 à 17:14:57  profilanswer
 

amsterdam a écrit :

Salut.
Voilà j'ai des données à transférer d'un fichier texte vers un tableau, en fait les différents mots d'une phrase.
Le problème est que j'y arrive bien tant qu'il faut que les données soient dans l'ordre mais je ne sais pas  comment faire pour placer ces mots dans mon tableau de façon aléatoire.
Si qqun avait une idée...
Merci d'avance. :)


Salut,
 
Ce que tu peux faire c'est utiliser la fonction rmd (si mes souvenirs sont exacts) pour "tirer" un chiffre aléatoire qui sera l'indice de ton tableau dans lequel placer ton mot.
 
Et tu boucles jusqu'à ce que ton tableau soit plein! Attention, il te faudra sûrement tester la valeur du chiffre aléatoire trouvé parce que peut-être que VB retournera plusieurs fois le même. Mais je ne suis pas sûr parce qu'il me semble que tu peux "initialiser" le randomize... Et si tu ne l'initialise qu'une fois, peut-être qu'il te sortira tous les nombres sans "tirer au sort" 2x le même.
 
Voilà... Faut juste être patient :)

n°1114520
amsterdam
Posté le 09-06-2005 à 17:38:04  profilanswer
 

C'est justement le problème de doublons qui me pose problème.
Donc en attendant j'ai commencé à tester autre chose.
Je crée une boucle qui me sort une chaine genre "123456" en fonction de la taille du tableau.
Me reste plus qu'à extraire les chiffres qui représentent l'indice du tableau de mots et comme ça pas de doublons.
 
Bon d'accord c'est surement un peu bourrin mais bon....:d
Enfin merci pour ta réponse. :jap:


Message édité par amsterdam le 09-06-2005 à 17:41:11
n°1114547
amsterdam
Posté le 09-06-2005 à 17:46:29  profilanswer
 

Par contre si j'ai plus de 10 mots je vais être mal....enfin j'essaie quand même. :lol:

n°1114617
dahlo
Posté le 09-06-2005 à 18:27:58  profilanswer
 

Rapido:
sub test()
Dim MyValue As Integer
Dim Nbmot, Cpt1, Cpt2 As Integer
Dim Montext, MonItem As String
Dim MonTabl() As String
'Texte
'Montext = "On ne peut pas attendre que l'inspiration vienne. Il faut courir après avec une massue."
Montext = "Les fichiers d'aide de Windows 2000 Server sont généralement placés dans " & _
          "C:\Winnt\Help. Ces fichiers sont interconnectés pour former un système d'aide " & _
          "intégré et ils contiennent des raccourcis permettant d'ouvrir différents outils " & _
          "d'administration. Les fichiers d'aide utilisent environ 30 Mo d'espace disque."
 
Montext = RTrim(LTrim(Montext))
'Compte nb mot
Cpt1 = 0
Nbmot = 0
Do
    Cpt1 = InStr(Cpt1 + 1, Montext, Chr(32))
    Nbmot = Nbmot + 1
Loop While Cpt1 > 0
'dim le tableau
ReDim MonTabl(Nbmot)
'init
Cpt1 = 0
Randomize    ' Initialise le générateur de nombres aléatoires.
'boucle sur nbmot
For Nbmot = 0 To UBound(MonTabl, 1) - 1
    Cpt1 = InStr(Cpt1 + 1, Montext, Chr(32))
    Select Case Nbmot
        Case 0
            Cpt2 = Cpt1 - 1
            Cpt1 = 0
        Case UBound(MonTabl, 1) - 1
            Cpt2 = Len(Montext)
        Case Else
            Cpt2 = InStr(Cpt1 + 1, Montext, Chr(32))
    End Select
    MonItem = Mid$(Montext, Cpt1 + 1, Cpt2 - Cpt1)
    MonItem = RTrim(MonItem)
    If Right(MonItem, 1) = Chr(46) Then MonItem = Mid(MonItem, 1, Len(MonItem) - 1)
    'cherche un index aléatoire dispo ds la dim du tableau
    Do
        MyValue = Int((UBound(MonTabl, 1) * Rnd))
    Loop While MonTabl(MyValue) <> ""
    MonTabl(MyValue) = MonItem
Next
'Test
For Cpt1 = 0 To UBound(MonTabl, 1) - 1
Debug.Print MonTabl(Cpt1)
Next
end sub
 
Bon! le traitement du texte est à revoir (structure, gestion fin paragraphe, majuscules ou pas...) l'essentiel est dans la dernière boucle Do...
 

n°1114664
amsterdam
Posté le 09-06-2005 à 19:08:14  profilanswer
 

Donc si je comprend bien la vérité ( est alleuirs :d )se trouve dans cette portion de code ?


 'cherche un index aléatoire dispo ds la dim du tableau
    Do
        MyValue = Int((UBound(MonTabl, 1) * Rnd))
    Loop While MonTabl(MyValue) <> ""
    MonTabl(MyValue) = MonItem
 


Bon bah y a plus qu'à....
Merci. :jap:


Message édité par amsterdam le 09-06-2005 à 19:09:29
n°1114687
dahlo
Posté le 09-06-2005 à 19:21:16  profilanswer
 

Yes, conjointement avec l'init Randomize.

n°1114888
amsterdam
Posté le 09-06-2005 à 21:45:30  profilanswer
 

Ok.
Sinon j'ai fait ceci en m'inspirant d'un truc trouvé sur un autre site et
à priori ça fonctionne.


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


Reste quand même à changer le nom des variables :lol: .
Merci à vous deux et rendez-vous à mon prochain bloquage. :sol:


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

  [VB6] tableau aléatoire [ résolu ]

 

Sujets relatifs
[Résolu] Désactiver la notification d'exécution de requête SQL[PHP] Aide pour tri de tableau multi-dimensionnel
[Résolu] insertion $langue[ACCESS] Probleme d'impression pour un etat - résolu
[VB6] Se placer aléatoirement sur une cellule d'un tableau[RESOLU] comment dupliquer une formule
Passer un tableau a un autre fichierExportation SQL Server 2000
[Resolu] itext et Netbeans 
Plus de sujets relatifs à : [VB6] tableau aléatoire [ résolu ]


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