VBA - Boucles Imbriquées de nombre variable

Amaury76 Messages postés 2 Date d'inscription jeudi 18 septembre 2008 Statut Membre Dernière intervention 19 septembre 2008 - 18 sept. 2008 à 11:37
Amaury76 Messages postés 2 Date d'inscription jeudi 18 septembre 2008 Statut Membre Dernière intervention 19 septembre 2008 - 19 sept. 2008 à 15:14
Bonjour,

J'ai un vecteur V de dimension variable K de nombres entiers: n1, n2, ....., nK
Chaque élément de ce vecteur est compris entre 0 et 10.

Je souhaite faire un calcul sur toutes les valeurs possibles du vecteur: il y en a donc 11^K.

Pour faire le calcul sur chacune des valeurs du vecteur j'ai pensé à des boucles for imbriquées:

for n1 = 0 to 10
   for n2 = 0 to 10
    ..............
            for nK = 0 to 10
                calcul sur le vecteur V(n1,...,nK)
 
Le problème c'est que K est variable: il peut prendre la valeur 3 comme la valeur 300 ou 1200

donc le nombre de boucles imbriquées est variable; et je ne vois pas comment programmer cela

Merci pour votre aide,

A bientôt,

Amaury

2 réponses

cretthie Messages postés 133 Date d'inscription mercredi 27 juin 2012 Statut Membre Dernière intervention 10 janvier 2012 1
18 sept. 2008 à 19:43
for n1 = 0 to 10
   for n2 = 0 to 10
    ..............
            for nK = 0 to 10
                calcul sur le vecteur V(n1,...,nK)

donc ton nK n'est pas egal a 0
Il devrait etre egal a nK, au lieu de 0, non ?
il faut affecter ta valeur dans ton for n2 ou n1ou encore en dehors des boucle selon ce que tu veux.
for n1 = 0 to 10
   for n2 = 0 to 10
    maValeur = n*K
            for nK = maValeur to 10
                calcul sur le vecteur V(n1,...,nK)

c'est ptetr ce que tu cherche.

mais c'es je mettrai plus cette question dans le forum algorithme.


meme dans le forum vba...
0
Amaury76 Messages postés 2 Date d'inscription jeudi 18 septembre 2008 Statut Membre Dernière intervention 19 septembre 2008
19 sept. 2008 à 15:14
Merci pour ta réponse [auteur/CRETTHIE/919213.aspx cretthie]

J'ai réussi à trouver la solution: utiliser la récursivité : ci-dessous le code pour ceux que cela intéresse (qui me donne le nb de cas et  la matrice des vecteurs à tester):

Option Base 1 'pour démarrer les indices à 1

Type R
    matrice() As Integer
    nb As Integer
End Type

Function Cas(k As Integer, vecteur() As Integer, cumul As Integer, ponderations() As Integer, k_max As Integer) As R
        For j = 0 To 10
            vecteur(k) = j
            If k = 1 Then
                cumul = cumul + 1
                For y = 1 To k_max
                    ponderations(y, cumul) = vecteur(y)
                Next y
            Else
                Cas = Cas(k - 1, vecteur(), cumul, ponderations(), k_max)
            End If
        Next j
        Cas.nb = cumul
        Cas.matrice = ponderations
End Function
0
Rejoignez-nous