Tableau aléatoire par paires [Résolu]

Messages postés
6
Date d'inscription
samedi 7 juin 2003
Statut
Membre
Dernière intervention
29 mai 2009
- - Dernière réponse : jmfmarques
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
- 5 déc. 2006 à 22:44
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.

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)
                If cases(casetotry) = 0 Then 'Si la place est libre, je prend sinon je cherche ailleur
                                        cases(casetotry) = i
                                        caseok = 1
                                        Else
                End If
           Wend
    Next

Next

Avec la boucle de mon i à 5 ça passe, au delà, ça crash
Afficher la suite 

9 réponses

Meilleure réponse
Messages postés
1855
Date d'inscription
jeudi 23 mai 2002
Statut
Membre
Dernière intervention
24 juin 2018
23
3
Merci
 Bonjour à tous

Exemple pour le mélange des chiffres.
Reste à définir "result" en tableau.

Dim aTabSeries(12)
Dim aSuites()          
Randomize


Dim i , iRnd
For i = 1 To 12
    aTabSeries(i) = i
Next 


'redim résultats
ReDim aSuites(12)



Dim Result
'on créé le tableau de résultat en "désactivant" ceux trouvés
For i = 1 To 12  Step 1
    aSuites(i) = 0
    While aSuites(i) = 0
          iRnd = Int(12 * Rnd) + 1
          If aTabSeries(iRnd) <> 0 Then
             aSuites(i) = aTabSeries(iRnd)
             aTabSeries(iRnd) = 0
             Result = Result & CStr(aSuites(i)) & " . " 
          End If
    Wend
Next
MsgBox Result,,"Chiffres mélangés"



jean-marc

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 122 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_JMO
Messages postés
1270
Date d'inscription
mardi 11 novembre 2003
Statut
Membre
Dernière intervention
24 juillet 2013
6
0
Merci
Salut
 1) Les 4 variables ne sont pas déclarés : elles sont toutes de type Variant
 2)  Le Else est inutile
 3)  Remplace Int(Rnd * 11) par Int(Rnd * 12) -1

GRENIER Alain[8D]
Commenter la réponse de cs_Galain
Messages postés
6
Date d'inscription
samedi 7 juin 2003
Statut
Membre
Dernière intervention
29 mai 2009
0
Merci
 3)  Remplace Int(Rnd * 11) par Int(Rnd * 12) -1

>> Et j'obtient donc un indice négatif qui n'exite pas dans mon tableau ...

sinon je ne vois pas en quoi 1&2 influencerais le comportement du programme
Commenter la réponse de cs_jcg56123
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
18
0
Merci
Attends !!

Il faut une fois de plus jouer, semble-t-il, aux devinettes !!!

Ta question serait-elle tout simplement :

"je cherche à dresser la liste de toutes les combinaisons possibles de nombres pris 2 à 2 dans une série de 6 nombres et à présenter les résultats dans un ordre aléatoire" ????


 


Si tel est le cas :
1) cpùbinaisons dans l'ordre ou indépendamment de l'ordre ?


2) Où rencontres-tu une difficulté ?


a) dans l'établissement de la liste des  combinaisons possibles ?
b) dans la présentation du résultat dans un ordre aléatoire ?
c) difficultés tant pour a) que pour b) ?
Commenter la réponse de jmfmarques
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
18
0
Merci
Ouais .....
L'abonné ne répond plus au numéro demandé.... et c'est bien dommage !!!!

Pour le cas où il repasserait par là, quand même :

Sais-tu, ami, ce qui m'onquiète le plus, dans toute cette "affaire" ?

C'est ton chiffre 12 ....
Tu ne vois pas pourquoi ?  (moi oui.... quel que soit le cas de figure, il est impossible.... et ce n'est pas là du VB mais de l'algèbre....).
Si tu repasses par là et que tu lis ceci :

S'il te plait : réexpose ton "problème" avec précision, genre :
"j'ai ceci :..........."
"et je dois faire celà : ........."
pour ton information, par exemple :

Dans le désordre, il existe 15 combinaisons possibles d'éléments pris 2 à 2 dans une série de 6 éléments...
Dans l'ordre ? Beaucoup plus  !!!!
Commenter la réponse de jmfmarques
Messages postés
1855
Date d'inscription
jeudi 23 mai 2002
Statut
Membre
Dernière intervention
24 juin 2018
23
0
Merci
 Bonsoir,

Bonsoir 615490 jmfmarques ,
N'étant pas matheux, j'avais un doute sur une partie de mon code, que je n'ai, donc, pas proposé.
ça me rassure.
Le topic  de =116697 jcg56123 est quand même assez éloquent:
"J'ai un petit exercice à faire pour l'école"....demande de toutes les combinaisons possibles.

Allez, encore un topic a oublié.
C'est assez désobligeant de voir le nombre de posts restant sans réponse de la part de l"émetteur du topic.  

Enfin ! pour ma part, ça me fait re-bouger les neurones après une journée de boulot de prog...

Sur ce, bonne soirée de programmation à tous,
et dans l'attente de trouver un topic intéressant.....et dans mes compétences.

jean-marc.
Commenter la réponse de cs_JMO
Messages postés
6
Date d'inscription
samedi 7 juin 2003
Statut
Membre
Dernière intervention
29 mai 2009
0
Merci
Ouf là ... Après un jour d'absence, je reviens sur mon topic et que vois-je .... ça "geule" de partout sans aucune raison.


C'est justement en pourrissant un topic de commentaire pareils que j'aurais envie de ne pas y répondre et d'aller voir ailleur.

Critiquer le fait que des étudiants viennent chercher de l'aide... Je n'ademet pas, je ne demande pas toutes les solutions mais une piste.

Bon ... Maintenant je continue mon post sagement ...



Je récapitule depuis le début ce que ce bout de code est sencé faire:

Le but est remplir un tableau indicé de paires de nombres de 0-> (indice max/2) et que ses nombres soient placés à des endroits aléatoires du tableau. Le but étant de créer mon tableau de variables pour un mémory.

Et avant que l'on ne vienne me dire qu'il existe une source mémory sur VB france. Voici déja ma réponse: "J'ai été consulter cette source, TRES complète. Mais malheureusement trop complexe à comprendre pour mes faibles connaissances en VB"

Merci d'avance à ceux qui pourront apporter quelques bout de codes à mon problème
Commenter la réponse de cs_jcg56123
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
18
0
Merci
Alors, jeune ami impatient (et je commence à l'être également) !

Ton code ? Je l'ai déjà fait hier....

Mais je n'aime vraiment pas le flou artistique ....

Si tu veux donc ce code, mon vieux, tu vas répondre à ceci (car c'est bien toi qui a écrit, avec ton 1er post : "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.")

Et si ces précisions étaient inutiles, pourquoi les avoir exposées, alors , hein ?

Allons-y alors :
Question 1 : que te demande-t-on de répartir exactement ?
a) des paires constituées des combinaisons, 2 à 2, de nombres pris dans une série de 1 à 6, sans tenir compte de l'ordre de la paire (ainsi : la paire ab = la paire ba) ? pour ton information, on obtiendrait dans ce cas 15 paires possibles et pas 12 !....
b) des paires constituées des combinaisons, 2 à 2, de nombres pris dans une série de 1 à 6, en tenant compte de l'ordre de la paire (ainsi : la paire ab = la paire ba) ? pour ton information, on obtiendrait dans ce cas un nombre beaucoup plus élévé de paires possibles....

c) finalement, je me suis mal expliqué et on me demande de partir de 12 chiffres différents. C'est moi qui en ai déduit qu'il fallait diviser 12 par 2....... (ce qui est faux !!!!). Et là encore : en tenant compte de l'odre ou sans en tenir compte ?

Une fois ceci clarifié (et les paires possibles déterminées, donc), leur présentation dans un ordre aléatoire viendra.

Voilà, jeune ami...
C'est mon dernier mot.
Tu prends ou ne prends pas...
Commenter la réponse de jmfmarques
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
18
0
Merci
Ps : j'ai vu ou tu "vas voir ailleurs" et où, compte tenu de tes explications non comprises (bien évidemment) quelqu'un a fini par te proposer un code venant encore d'ailleurs pour "mixer des cartes à jouer".
J'ai bien ri dans ma barbe..(si tu veux savoir)...
Voilà donc une affaire au demeurant simple, qui traîne ici et là depuis quelques jours....
A toi de voir ....
Commenter la réponse de jmfmarques