Imbrication de boucle for

Supopste Messages postés 69 Date d'inscription dimanche 30 octobre 2005 Statut Membre Dernière intervention 6 mars 2008 - 24 août 2006 à 10:57
Supopste Messages postés 69 Date d'inscription dimanche 30 octobre 2005 Statut Membre Dernière intervention 6 mars 2008 - 24 août 2006 à 11:51
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

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

Sébastien FERRAND (
blog)
Consultant Indépendant
[Microsoft MVP Visual C#]
0
Supopste Messages postés 69 Date d'inscription dimanche 30 octobre 2005 Statut Membre Dernière intervention 6 mars 2008
24 août 2006 à 11:04
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
0
sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 38
24 août 2006 à 11:04
hum... j'aurais dû faire un refresh.

Sébastien FERRAND (
blog)
Consultant Indépendant
[Microsoft MVP Visual C#]
0

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

Posez votre question
sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 38
24 août 2006 à 11:05
explique ton problème... ce sera plus simple pour t'aider !

Sébastien FERRAND (
blog)
Consultant Indépendant
[Microsoft MVP Visual C#]
0
Nikoui Messages postés 794 Date d'inscription vendredi 24 septembre 2004 Statut Membre Dernière intervention 19 août 2008 10
24 août 2006 à 11:06
Quelle fonction rapeller? Tout dépend de ce que tu veux faire... c'est tout le problème (plaisir?) de la récursivité :)
0
Nikoui Messages postés 794 Date d'inscription vendredi 24 septembre 2004 Statut Membre Dernière intervention 19 août 2008 10
24 août 2006 à 11:07
Ah bah moi aussi j'aurai du faire un refresh.
0
Supopste Messages postés 69 Date d'inscription dimanche 30 octobre 2005 Statut Membre Dernière intervention 6 mars 2008
24 août 2006 à 11:14
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.
0
Nikoui Messages postés 794 Date d'inscription vendredi 24 septembre 2004 Statut Membre Dernière intervention 19 août 2008 10
24 août 2006 à 11:18
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
0
Supopste Messages postés 69 Date d'inscription dimanche 30 octobre 2005 Statut Membre Dernière intervention 6 mars 2008
24 août 2006 à 11:20
Oki c'est déjà bien sympa de m'avoir guidé vers la manière de faire;
bonne journée à toi Nikoui
0
sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 38
24 août 2006 à 11:34
quels sont les paramètres d'entrés ?

Sébastien FERRAND (
blog)
Consultant Indépendant
[Microsoft MVP Visual C#]
0
Supopste Messages postés 69 Date d'inscription dimanche 30 octobre 2005 Statut Membre Dernière intervention 6 mars 2008
24 août 2006 à 11:38
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]];
0
Supopste Messages postés 69 Date d'inscription dimanche 30 octobre 2005 Statut Membre Dernière intervention 6 mars 2008
24 août 2006 à 11:41
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...)
0
Supopste Messages postés 69 Date d'inscription dimanche 30 octobre 2005 Statut Membre Dernière intervention 6 mars 2008
24 août 2006 à 11:45
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]
0
Supopste Messages postés 69 Date d'inscription dimanche 30 octobre 2005 Statut Membre Dernière intervention 6 mars 2008
24 août 2006 à 11:51
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
0