Imbrication de boucle for

Signaler
Messages postés
69
Date d'inscription
dimanche 30 octobre 2005
Statut
Membre
Dernière intervention
6 mars 2008
-
Messages postés
69
Date d'inscription
dimanche 30 octobre 2005
Statut
Membre
Dernière intervention
6 mars 2008
-
Bonjour,
comment est il possible de créer une imbrication de n boucles for sans connaître a priori le n  (il varie au cours du programmes)
Je ne vois pas du tout comment faire...
Merci beaucoup!

15 réponses

Messages postés
794
Date d'inscription
vendredi 24 septembre 2004
Statut
Membre
Dernière intervention
19 août 2008
10
Par récursivité?
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
37
houla... on appelle ça de la récursivité à ce niveau.

Sébastien FERRAND (
blog)
Consultant Indépendant
[Microsoft MVP Visual C#]
Messages postés
69
Date d'inscription
dimanche 30 octobre 2005
Statut
Membre
Dernière intervention
6 mars 2008

Oui je pense que ça doit se résoudre par récursivité mais j'ai du mal à voir quelle serait la fonction à rappler...J'ai les neurones trop endormis peut-être...
Merci en tout cas
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
37
hum... j'aurais dû faire un refresh.

Sébastien FERRAND (
blog)
Consultant Indépendant
[Microsoft MVP Visual C#]
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
37
explique ton problème... ce sera plus simple pour t'aider !

Sébastien FERRAND (
blog)
Consultant Indépendant
[Microsoft MVP Visual C#]
Messages postés
794
Date d'inscription
vendredi 24 septembre 2004
Statut
Membre
Dernière intervention
19 août 2008
10
Quelle fonction rapeller? Tout dépend de ce que tu veux faire... c'est tout le problème (plaisir?) de la récursivité :)
Messages postés
794
Date d'inscription
vendredi 24 septembre 2004
Statut
Membre
Dernière intervention
19 août 2008
10
Ah bah moi aussi j'aurai du faire un refresh.
Messages postés
69
Date d'inscription
dimanche 30 octobre 2005
Statut
Membre
Dernière intervention
6 mars 2008

Oki je pense vous comprendrez mieux.
Le but c'est de calculer les meilleurs positions relatives de n éléments par rapport à un élément de référence.
Je sais que chaque élément i  peut avoir k[i] positions possibles, je veux pouvoir déterminer la meilleure position
de chacun des éléments kBest[i] qui se détermine par un calcul d'erreur entre chaque élément (cette partie là je l'ai).
Donc en prenant en exemple,
j'ai 4 éléments que je veux palcer apr rapport à un élément de référence,

je voudrais faire

float minErreur=999999;
float[] solution=new float[4];
for(int i1=0;i1<k[1];i1++)
    for(int i2=0;i2<k[2];i2++)
       for(int i3=0;i3<k[3];i3++)
          for(int i4=0;i1<k[4];i4++)
          {
                float calculErreur= erreur(i1,i2,i3,i4);
                if(calculErreur < minErreur)
                   solution=[i1,i2,i3,i4];
            }
Si minErreur n'est plus égal à 999999, je considre que la meilleure solution est solution...
J'espère avoir mieux expliquer le problème (je veux pouvoir faire pour tout n et pas que pour 4)

Merci.
Messages postés
794
Date d'inscription
vendredi 24 septembre 2004
Statut
Membre
Dernière intervention
19 août 2008
10
Je te confirme d'après ton code que ce que tu veux faire se fait par récursivité. Là je n'ai pas le temps de me pencher dessus, peut être plus tard si sebmafate (ou un autre) ne t'a pas donné le code
Messages postés
69
Date d'inscription
dimanche 30 octobre 2005
Statut
Membre
Dernière intervention
6 mars 2008

Oki c'est déjà bien sympa de m'avoir guidé vers la manière de faire;
bonne journée à toi Nikoui
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
37
quels sont les paramètres d'entrés ?

Sébastien FERRAND (
blog)
Consultant Indépendant
[Microsoft MVP Visual C#]
Messages postés
69
Date d'inscription
dimanche 30 octobre 2005
Statut
Membre
Dernière intervention
6 mars 2008

En entrée j'ai:
n, les k[n] et tous ce qui permet de calculer erreur[i1,i2,...,in]
et en sortie je souhaite obtenir solution[]=[kBest[1],...,kBest[n]];
Messages postés
69
Date d'inscription
dimanche 30 octobre 2005
Statut
Membre
Dernière intervention
6 mars 2008

En gros pour simmplifier, il faudrait que j'obtienne tous les éléments d'un vecteur V[] de taille n et dont le max des V[i] est k[i] (que je connais...)
Messages postés
69
Date d'inscription
dimanche 30 octobre 2005
Statut
Membre
Dernière intervention
6 mars 2008

encore exemple si k[1]=3; k[2]=2; et k[3]=1
je voudrais avoir
[0,0,0][0,0,1][0,1,0][0,1,1][0,2,0][0,2,1]
[1,0,0][1,0,1][1,1,0][1,1,1][1,2,0][1,2,1]
[2,0,0][2,0,1][2,1,0][2,1,1][2,2,0][2,2,1]
[3,0,0][3,0,1][3,1,0][3,1,1][3,2,0][3,2,1]
Messages postés
69
Date d'inscription
dimanche 30 octobre 2005
Statut
Membre
Dernière intervention
6 mars 2008

Bon je crois avoir un peu compris, vu que je connais le nombre de solutions possibles à tester car je connais n et chaque k[n], je peux créer ue realtion d'ordre et donc je commence de [0,0,0...,0] et je fais pour l'élément juste supérieur [0,0,0,...,1] etc