Aide générateur de combinaison

Résolu
seb4stien13 Messages postés 31 Date d'inscription lundi 17 novembre 2008 Statut Membre Dernière intervention 11 septembre 2011 - 6 mars 2011 à 11:58
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 - 6 mars 2011 à 21:27
Bonjour à tous je cherche désespérément à réaliser un générateur de combinaison.
Je sais que cela est un truc tout bête mais je n'arrive pas à me le representer et donc à le programmer .
En effet j'aimerai qu'il me génére toutes les possibilités de combinaison .
Exemple je possède les lettres(A,B,C,D,E,F) et les chiffres (0,1,2,3,4,5,6,7,8,9) et je voudrais qu'il me génére toutes les combinaison possibles avec 4 caractères , c'est à dire.
AAAA
AAAB
AAAC
AAAD
....
AA0A
AA1A
AA1B
....
A0AA
A1AA

Voila j'espere que quelqu'un pourrai m'aider

Merci

9 réponses

cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
6 mars 2011 à 18:57
Bonsoir
avec l'aide de tous
 Dim i As Integer
        Dim combinaison() As String
        Dim hexa As Integer
        Try
            hexa = (Integer.Parse("FFFF", Globalization.NumberStyles.HexNumber))
            ReDim combinaison(hexa)
            For i = 0 To hexa
                combinaison(i) = i.ToString("X4")
            Next i
        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try

3
NHenry Messages postés 15123 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 20 mai 2024 159
6 mars 2011 à 13:10
Bonjour,

Voici une suggestion, je ne l'ai pas testé, mais ça devrait fonctionner.
ça utilises la récursivité.

Private Function GenereCombinaison(byval pDigits as String(),byval pNbDigit as Integer) as String()
    Dim ltCombis as new List(of String)
    
    GetCombinaison(ltCombis,pDigits,pNbDigits,"")
    
    Return ltCombis.ToArray
End Function

Private Sub GetCombinaison(Byval ptCombis as List(of String),byval pDigits as String(),byval pNbDigit as Integer,ByVal pPredecessor as string)
    For Each lChar as String in pDigits
        if pNbDigits=0 Then
            ptCombis.Add(pPredecessor+lchar)
        else
            GetCombinaison(ptCombis,pDigits,pNbDigits-1,pPredecessor+lchar)
        End if
    Next
end sub


Mon site
0
AlKatou Messages postés 95 Date d'inscription vendredi 7 février 2003 Statut Membre Dernière intervention 28 novembre 2017
6 mars 2011 à 13:57
Salut,

à regarder tes éléments lettres et chiffres, on constate que ceux sont les caractères de la notation héxadécimal. note que dans cette notation les chiffres sont plus petits que les lettres.

pour résoudre ton problème, il te faut donc balayer (boucler) des valeurs 0 (valeur hexa &h0000) à 65535 (valeur hexa &hFFFF). et faire un renvoi par l'instruction right("0000" & cstr(hex(i)), 4) où i est la variable de ta boucle.

maintenant, là c'est une instruction VB, donc si tu utilises du VB.net c'est à toi de l'adapter.

bon dév.


AlKa
0
NHenry Messages postés 15123 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 20 mai 2024 159
6 mars 2011 à 14:57
Bonjour,

Ma solution a pour avantage d'être plus souple, mais celle de AlKatou est plus simple.

A toi de choisir celle que tu veux.

Pour la conversion, voir avec :
Integer.Parse(txt, Globalization.NumberStyles.HexNumber)

Mon site
0

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

Posez votre question
Profil bloqué
6 mars 2011 à 17:12
Salut
en VB Net cela donne

dim i as integer
dim combinaison as string
redim combinaison (65536)
for i = 0 to 65535
combinaison(i) = i.toString("X4")
next i

Les 65536 combinaisons possibles sont dans le tableau combinaison

La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi.

GRENIER Alain
0
NHenry Messages postés 15123 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 20 mai 2024 159
6 mars 2011 à 19:09
Bonjour,

Si FFFF est toujours présent à cette valeur, à la place de :
hexa = (Integer.Parse("FFFF", Globalization.NumberStyles.HexNumber))
tu peux faire :
hexa = &hFFFF
ou hexa=65535

Mon site
0
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
6 mars 2011 à 19:17
Ah oui encore mieux avec hexa = &hFFFF
je ne suis pas obligé de savoir que
&hFFFF = 65535 (16^4 -1)
0
seb4stien13 Messages postés 31 Date d'inscription lundi 17 novembre 2008 Statut Membre Dernière intervention 11 septembre 2011
6 mars 2011 à 21:07
Merci à tous et donc si je veux stockés tous mes résultat dans une textbox je procède comment ?
0
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
6 mars 2011 à 21:27
avec une listbox
ListBox1.Items.Clear()
ListBox1.Items.AddRange(combinaison)
0
Rejoignez-nous