Help!!!

[Résolu]
Signaler
Messages postés
82
Date d'inscription
vendredi 20 mai 2005
Statut
Membre
Dernière intervention
24 octobre 2005
-
Messages postés
82
Date d'inscription
vendredi 20 mai 2005
Statut
Membre
Dernière intervention
24 octobre 2005
-
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)

exemple: v3(x1,y2,z2,t2),v4(x1,y1,z2,t2).........

Merci pour toute proposition

8 réponses

Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
8
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
}
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
8
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)
Messages postés
82
Date d'inscription
vendredi 20 mai 2005
Statut
Membre
Dernière intervention
24 octobre 2005

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???
Messages postés
82
Date d'inscription
vendredi 20 mai 2005
Statut
Membre
Dernière intervention
24 octobre 2005

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
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
8
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)
Messages postés
82
Date d'inscription
vendredi 20 mai 2005
Statut
Membre
Dernière intervention
24 octobre 2005

Comment je peux faire ce décalage??
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
8
l'opérateur <<, comme j'ai fait plus haut
Messages postés
82
Date d'inscription
vendredi 20 mai 2005
Statut
Membre
Dernière intervention
24 octobre 2005

ah, je comprend maintenant j'ai pas fait attention, merci beaucoups