Help!!!

Résolu
imanedaoudi Messages postés 82 Date d'inscription vendredi 20 mai 2005 Statut Membre Dernière intervention 24 octobre 2005 - 25 sept. 2005 à 15:43
imanedaoudi Messages postés 82 Date d'inscription vendredi 20 mai 2005 Statut Membre Dernière intervention 24 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)

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

Merci pour toute proposition

8 réponses

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

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

Posez votre question
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
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)
0
imanedaoudi Messages postés 82 Date d'inscription vendredi 20 mai 2005 Statut Membre Dernière intervention 24 octobre 2005
25 sept. 2005 à 21:46
Comment je peux faire ce décalage??
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
25 sept. 2005 à 23:37
l'opérateur <<, comme j'ai fait plus haut
0
imanedaoudi Messages postés 82 Date d'inscription vendredi 20 mai 2005 Statut Membre Dernière intervention 24 octobre 2005
26 sept. 2005 à 01:28
ah, je comprend maintenant j'ai pas fait attention, merci beaucoups
0
Rejoignez-nous