Supopste
Messages postés69Date d'inscriptiondimanche 30 octobre 2005StatutMembreDernière intervention 6 mars 2008
-
24 août 2006 à 10:57
Supopste
Messages postés69Date d'inscriptiondimanche 30 octobre 2005StatutMembreDerniè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!
Supopste
Messages postés69Date d'inscriptiondimanche 30 octobre 2005StatutMembreDerniè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
Supopste
Messages postés69Date d'inscriptiondimanche 30 octobre 2005StatutMembreDerniè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)
Nikoui
Messages postés794Date d'inscriptionvendredi 24 septembre 2004StatutMembreDernière intervention19 août 200813 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
Supopste
Messages postés69Date d'inscriptiondimanche 30 octobre 2005StatutMembreDerniè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]];
Supopste
Messages postés69Date d'inscriptiondimanche 30 octobre 2005StatutMembreDerniè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...)
Supopste
Messages postés69Date d'inscriptiondimanche 30 octobre 2005StatutMembreDerniè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]
Supopste
Messages postés69Date d'inscriptiondimanche 30 octobre 2005StatutMembreDerniè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