Comment trouver toutes les combinaisons de 2 tableaux de valeurs?

tommy5 Messages postés 4 Date d'inscription vendredi 2 décembre 2005 Statut Membre Dernière intervention 16 février 2006 - 15 févr. 2006 à 20:19
tommy5 Messages postés 4 Date d'inscription vendredi 2 décembre 2005 Statut Membre Dernière intervention 16 février 2006 - 16 févr. 2006 à 10:53
Bonjour à tous,
Je dispose de 2 tableaux de string, par exemple:
{"A","B","C"} et {"1","2"} et je voudrais écrire une fonction qui me permette de trouver les combinaisons possible, CAD: "A1", "A2", "B1", "B2", "C1", "C2"
Je sais faire cela en imbriquant des boucles, mais je ne sais pas faire quand il s'agit d'entrer en parametres le nombre de tableaux, car je voudrais que cela soit possible avec un nombre indéterminé.
J'ai bien essayé en créant un "tableau de tableaux de string" avec une fonction récursive... mais en vain. Je ne suis décidément pas très doué...
Etant debutant en programmation, je pense que je n'ai pas les bases d'algorithme...
Si quelqu'un pouvait éclairer ma lanterne...
Merci d'avance à tous!

6 réponses

cs_MasterHack Messages postés 586 Date d'inscription jeudi 18 septembre 2003 Statut Membre Dernière intervention 13 février 2008 2
15 févr. 2006 à 20:51
salut, voici un code à tester :
tu mets un bouton et une list sur ta form puis colle ce code (a analyser)

Private Sub Command1_Click()
alpha = Array("A", "B", "C", "D")
num = Array("1", "2", "3")
For i = LBound(alpha) To UBound(alpha)
For j = LBound(num) To UBound(num)
List1.AddItem alpha(i) & num(j)
Next
Next
End Sub


<HR>

Life is short...Learn more
Copy Rights <> Rights to Copy
0
tommy5 Messages postés 4 Date d'inscription vendredi 2 décembre 2005 Statut Membre Dernière intervention 16 février 2006
15 févr. 2006 à 21:28
Merci pour la réponse! La solution que tu proposes est effectivement
celle que j'avais retenue au départ, mais comment étendre ça à un plus
grand nombre d'"arrays" sachant qu'il peut changer?

En reprenant ton exemple: Au lieu d'avoir:

alpha = Array("A", "B", "C", "D")

num = Array("1", "2", "3")

J'aurais:

alpha(0) = Array("A", "B", "C", "D")

alpha(1) = Array("1", "2", "3")

...

alpha(x) = Array("do", "re", "mi", "fa")

etc, etc....

Je ne connais pas x, je ne peux donc pas décider à l'avance du nombre de boucles...
0
tommy5 Messages postés 4 Date d'inscription vendredi 2 décembre 2005 Statut Membre Dernière intervention 16 février 2006
15 févr. 2006 à 21:33
J'aurais en effet du etre plus précis dans mon sujet, toutes mes excuses...
0
cs_MasterHack Messages postés 586 Date d'inscription jeudi 18 septembre 2003 Statut Membre Dernière intervention 13 février 2008 2
16 févr. 2006 à 01:07
re, en cas generale pour trouver le x utilise la fonction:
x=ubound(alpha)
de toute façon tu ne peux pas eviter de dimentionner le tableau alpha au debut
dim alpha (taille)


<HR>

Life is short...Learn more
Copy Rights <> Rights to Copy
0

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

Posez votre question
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
16 févr. 2006 à 03:08
Salut,

résultat dans une ListBox

lancement par un bouton







Dim alpha(3) As Variant



Private Sub Form_Load()

alpha(0) = Array("A", "B", "C", "D")

alpha(1) = Array("1", "2", "3")

alpha(2) = Array("X", "Y", "Z")

alpha(3) = Array("do", "re", "mi", "fa")

End Sub



Private Sub Command1_Click()

Dim T() As Integer

Dim x As Integer

Dim Cx As Integer

Dim n As Integer

Dim i As Integer

Dim j As Integer

Dim z As Long

Dim s As String



x = UBound(alpha)

Cx = UBound(alpha(x))

ReDim T(Cx)



Do

T(n) = i

For i = n + 1 To x - 1

T(i) = 0

Next

DoEvents

For i = 0 To Cx

s = ""

For j = 0 To x - 1

s = s & alpha(j)(T(j))

Next

List1.AddItem s & alpha(j)(i)

z = z + 1

Next

For n = x - 1 To 0 Step -1

i = T(n) + 1

If i <= UBound(alpha(n)) Then Exit For

Next

Loop Until n < 0



Me.Caption "nombre " & z



End Sub


Daniel
0
tommy5 Messages postés 4 Date d'inscription vendredi 2 décembre 2005 Statut Membre Dernière intervention 16 février 2006
16 févr. 2006 à 10:53
Merci beaucoup Gobillot, c'est exactement ce que je cherchais à faire... Je vais étudier ça de près...
0
Rejoignez-nous