Forum Liberty Basic France

Le 14/02/2011 à 11h28

Libertynaute

Groupe: Membre

Inscrit le: 17/12/2010
Messages: 72
Salut,

Pour mon programme actuel j'ai besoin d'une fonction qui me génére la liste de toutes les combinaisons possible à partir de 2 paramètres.

Par exemple :
J'envois les 2 valeurs suivantes à ma fonction : x=2 et y=3
et la fonction me génére :

111
112
121
122
211
212
221
222

soit : 2^3 =8 combinaisons (qui seront stoker soit dans un tableau ou un fichier texte)

Avec des boucle FOR..NEXT j'arrive à le faire mais cela demande de savoir à l'avance x et y.
Ce que je veux c'est une fonction qui fasse cela automatiquent à partir de ces 2 paramètres ;)

J'ai pensé à une fonction récursive, mais j'ai pas encore trouvé la soluce... :/
alors si quelqu'un a sa en magasin ... et peut me donner la solution je le remerci d'avance ;)

@+



Edité par joan74 Le 14/02/2011 à 11h31
____________________
"La différence entre la théorie et la pratique,
c'est qu'en théorie il n'y a pas de différence,
mais qu'en pratique il y en a une."

   
Le 14/02/2011 à 18h12

Administrateur

Groupe: Administrateur

Inscrit le: 24/09/2010
Messages: 203
Hum... j'ai pas vraiment compris ce que tu voulais faire. Pourquoi ne pas mettre ta boucle for dans une fonction directement ?

Code VB :
call combi 2, 3
end
 
 
sub combi x, y
 
    dim l(x^y, y)   ' déclaration de la liste

    for i = 1 to y  ' Initialisation du premier élément
        l(1, i) = 1
    next
 
    for i = 2 to x^y    ' Pour les x^y combinaisons possibles
        r = 1           ' Retenue à 1
        for j = 1 to y  ' Pour les y caractères
            if r = 1 then   ' Si la retenue est à 1, on incrémente le caractère
                if l(i-1, j) = x then   ' Si le caractère est au max, on le remet à 1
                    l(i, j) = 1
                    r = 1
                else                    ' Sinon, on l'incrémente
                    l(i, j) = 1 + l(i-1, j)
                    r = 0
                end if
            else            ' Si la retenue est à 0, on copie/colle le caractère
                l(i, j) = l(i-1, j)
            end if
        next
    next
 
    for i = 1 to x^y            ' Affichage de la liste
        for j = 1 to y
            print l(i, j);
        next
        print
    next
 
end sub
 
 
 

Mail MSN Web    
Le 16/02/2011 à 05h23

Libertynaute

Groupe: Membre

Inscrit le: 17/12/2010
Messages: 72
Merci beaucoup BlackTemplar...
C'est exactement ce que je voulais. :top :top :top

@+
____________________
"La différence entre la théorie et la pratique,
c'est qu'en théorie il n'y a pas de différence,
mais qu'en pratique il y en a une."

   

 |  |

1 Utilisateur en ligne : 0 Administrateur, 0 Modérateur, 0 Membre et 1 Visiteur
Utilisateur en ligne : Aucun membre connecté
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie