IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB 6 et antérieur Discussion :

Tableau par pair


Sujet :

VB 6 et antérieur

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2005
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2005
    Messages : 87
    Par défaut Tableau par pair
    Bonjour

    J'ai un petit exercice à faire pour l'école. Le pseudo code passe et VB plante ...

    Le but du programme est de remplir un tableau de 12 indices avec 6 paires de nombres allant de un à six. Je sais qu'il existe aussi le IsEmpty pour vérifier si une variable est vide. Normalement je n'ai pas encore vu de fonction pour mélanger un tableau.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    Randomize
    Dim i, caseok, cases(12), casetotry
    For i = 1 To 6 'mon nombre de un à six
        For j = 1 To 2 'je le met deux fois pour avoir des paires
            caseok = 0
            While caseok = 0
                casetotry = Int(Rnd * 11)
                'Si la place est libre, je prend sinon je cherche ailleur
                If cases(casetotry) = 0 Then 
                    cases(casetotry) = i
                    caseok = 1
                  Else
                End If
            Wend
        Next
    Next
    Avec la boucle de mon i à 5 ça passe, au delà, ça crash

  2. #2
    Membre expérimenté Avatar de AdHoc
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    245
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 245
    Par défaut
    Bonjour,
    Comment déclares tu ton tableau ?
    Pour le parcours, utilise lbound et ubound.

  3. #3
    Membre Expert
    Avatar de zazaraignée
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    3 174
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 3 174
    Par défaut
    Salut

    Je me suis permi de modifier les indentations de ton code et j'ai aussi éliminé des lignes blanches, dans le but d'en améliorer la lisibilité.

    J'ai noté ceci:
    1. Toutes tes variables n'ont pas de type déclarés explicitement. Elles sont donc toutes de type Variant. À éviter autant que possible.
    2. Ton tableau est déclaré avec 13 indices de zéro à 12.
    3. Essaie de vérifier le contenu de ton tableau avec
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      If cases(casetotry) = "" Then
    4. Tu remplis ton tableau et ensuite tu remplace la valeur entrée alors que tu devrais concaténer les deux valeurs:
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      cases(casetotry) = cases(casetotry) & ", " & i
      sauf que vu que ton test (while, wend) est à l'intérieur des deux boucles for next, la deuxième valeur ne sera jamais concaténée. tu dois faire ton test tout de suite à la première boucle et faire la deuxième selon le résultat de ce test.

  4. #4
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2005
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2005
    Messages : 87
    Par défaut
    Merci pour le code, on y vois plus clair !

    Euh Zazaraignée pourquoi me parle tu de concaténation ? Le but est simplement d'avoir un tableau contenant des paires de nombre de 1 à 6 disposées aléatoirement dans mon tableau. Le but est en réalité de former un tableau indicé pour une grille de mémory . Donc des nombres allant de 1 à (nombre de carte/2) disposé en paires de façon aléatoire.

    Je cherche toujours. Même mon prof n'arrive pas à faire tourner ça alors que c'est le début du mémory pour l'exam de noël .. ça pormet.

    Bonne soirée à vous ;-)

    Hakna

  5. #5
    Membre Expert
    Avatar de Delbeke
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    2 675
    Détails du profil
    Informations personnelles :
    Âge : 72
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 2 675
    Par défaut
    J'ai verifié, le programme ne plante pas, mais il te faudra beaucoup de temps avant qu'il se termine. Je propose un autre approche du problème.
    Suppose tes cases préremplies avec des valeur croissantes (de 1 a 10). il te suffit de battre les cartes. En anglais on appelle çà un shuffle

    Un petit coup de google ma donné ce lien qui devrait t'être utile
    http://www.freevbcode.com/ShowCode.asp?ID=7399

  6. #6
    Membre Expert
    Avatar de Delbeke
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    2 675
    Détails du profil
    Informations personnelles :
    Âge : 72
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 2 675
    Par défaut
    Désolé, le code est en Vb.Net, il faut l'adapter un peu
    en voici une traduction pour Vb6


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    Option Explicit
     
    Public Function Shuffle(Deck As Variant) As Variant
      Dim intUBound As Integer
      Dim intHUBound As Integer
      Dim intRanNum As Integer
      Dim a As Variant
      Dim b As Variant
      Dim i As Integer
      Dim blnError As Boolean
      'Starts the randon deck Shuffle
      intUBound = UBound(Deck)
      intHUBound = intUBound
      ReDim a(intUBound)
      ReDim b(intUBound)
      For i = 0 To intUBound
          a(i) = Deck(i) ' Sets array (a) list to (1 to cntnum)
      Next i
      Do
        Randomize ' Activates the Random Number Generator
        intRanNum = Int(Rnd() * intUBound) ' Picks a Random number between 0 and max number
        b(0) = a(intRanNum)
        On Error GoTo ErrCritique
        For i = 1 To intUBound ' Starts a loop
          If intRanNum = intUBound Then intRanNum = -1 ' If the Random number = max number then the Random number becomes 0
          intRanNum = intRanNum + 1 ' Adds 1 to the Random number
          b(i) = a(intRanNum) ' b(current loop value) = The current Random number
        Next i ' Adds 1 to i and loops until i is greater than the max Number
        On Error GoTo 0
        For i = 0 To intUBound
            a(i) = b(i) ' Makes array a the same as array b
        Next i
        intUBound = intUBound - 1 ' Subtracts 1 from the max number
      Loop Until intUBound = -1
      Shuffle = a
      Exit Function
    ErrCritique:
      MsgBox "An Error has occured, Outcome may not be acurate", vbCritical, "Error"
    End Function
     
    Private Sub Command1_Click()
      Dim Tble As Variant
      Dim Resultat As Variant
      Dim iPnt As Integer
      Tble = Split("0,1,2,3,4,5,6,7,8,9,10,11", ",")
      Resultat = Shuffle(Tble)
      For iPnt = 0 To 11
        Debug.Print iPnt, Resultat(iPnt)
      Next
    End Sub

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [PHP 5.3] Comment regrouper des elements d'un tableau par paire de 2
    Par Jarod51 dans le forum Langage
    Réponses: 2
    Dernier message: 23/04/2010, 11h02
  2. Trier un tableau par ordre croissant
    Par Halleck dans le forum Algorithmes et structures de données
    Réponses: 15
    Dernier message: 01/11/2004, 00h04
  3. Envoi d'un tableau par pipe
    Par Chicard dans le forum Développement
    Réponses: 2
    Dernier message: 10/03/2004, 09h47
  4. Passage d'un tableau par référence?
    Par sebduth dans le forum C
    Réponses: 9
    Dernier message: 16/07/2003, 18h32
  5. [] Tri d'un tableau par ordre alphabétique
    Par cafeine dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 17/09/2002, 08h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo