imanedaoudi
Messages postés82Date d'inscriptionvendredi 20 mai 2005StatutMembreDernière intervention24 octobre 2005
-
25 sept. 2005 à 15:43
imanedaoudi
Messages postés82Date d'inscriptionvendredi 20 mai 2005StatutMembreDernière intervention24 octobre 2005
-
26 sept. 2005 à 01:28
Bonjour,
j'ai deux vecteur v1(x1,y1,z1,t1) et v2(x2,y2,z2,t2) je cherche à programmer tous les vecteurs dont les coordonnées sont une combinaison des coordonnées de v1 et v2 (ttes les combinaisons possible)
vecchio56
Messages postés6535Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention22 août 201014 25 sept. 2005 à 17:34
Je te donne un petit bout de code. J'ai pas du tout testé, ca marche sans doute pas, mais ca donne une idée de comment faire
int p = 2 << d; // nombre de vecteurs à fabriquer
int c = 0; // coordonnée actuelle
int bloc = p;
while(c != d)
{
p /= 2;
int i = 0; // indice pour le vecteur à remplir
while(i != p)
{
int j;
for(j 0; j < bloc; j++) v[i++].coord[c] v1.coord[c];
for(j 0; j < bloc; j++) v[i++].coord[c] v1.coord[c];
}
c++; // passe à la coordonnée suivante
}
vecchio56
Messages postés6535Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention22 août 201014 25 sept. 2005 à 16:14
Ya rien de compliqué ici. Tu as 2^4 possibilités ici. Tu peux tous les
faires. J'imagine que quelque chose varie (nombre de coordonnées, ou
nombre de vecteur), non? Si c'est le cas, tu peux faire une boucle
Au début, tu dois créer un tableau de vecteurs de taille (nombre de vecteur)^(nombre de coordonnées)
imanedaoudi
Messages postés82Date d'inscriptionvendredi 20 mai 2005StatutMembreDernière intervention24 octobre 2005 25 sept. 2005 à 17:00
j'ai programmer comme ca
v=new vecteur[2^d]//d:le nombre de coordonnees
for(int i=0;i<d;i++)
{
v[i]=v1;
v[i].coord[i]=v2.coord[i];
}
int p=d;
for( i=0;i<d;i++)
{
v[p]=v2;
v[p].coord[i]=v1.coord[i];
p++;
}
Mais avec cette solution je ne récupere pas toutes les combinaison.est ce qu'il y a mieux???
imanedaoudi
Messages postés82Date d'inscriptionvendredi 20 mai 2005StatutMembreDernière intervention24 octobre 2005 25 sept. 2005 à 20:16
la methode marche très bien sauf qu'il faut rectifier qlq indices voici les rectif:
vecteur* Rect::ReconstructionRegion(int di)
{
int k=0;
vecteur *v;
int p=pow(2,di);
v=new vecteur[p];
int c = 0; // coordonnée actuelle
int bloc = p;
while(c != di)
{
p /= 2;
int i = 0; // indice pour le vecteur à remplir
while(i != bloc)
{
int j;
for(j 0; j <p; j++) {v[i++].coord[c] p1.coord[c];}
for(j 0; j <p; j++) {v[i++].coord[c] p2.coord[c];}
}
c++; // passe à la coordonnée suivante
}
return v;
}
Merci beaucoups vecchio56
Vous n’avez pas trouvé la réponse que vous recherchez ?
vecchio56
Messages postés6535Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention22 août 201014 25 sept. 2005 à 20:51
Pour calculer 2^n, ne pas utiliser la fonction pow, un décalage à gauche suffit, c'est plus rapide, et plus logique (quand n est entier bien sur, ce qui est le cas ici)