[LCP] Problème de vecteur

Voir le sujet précédent Voir le sujet suivant Aller en bas

[LCP] Problème de vecteur

Message  Dj x-fuse le Dim 19 Déc 2010, 17:08

Bonjour / soir à tous,

Dans le cadre du projet cephalopod j'utilise comme tout le monde des vecteurs. Afin de transférer d'une méthode à une autre les voisins d'une position donnée, j'utilise un vecteur de positions.
Mon problème proviens du fait que quand je veux récupérer les valeurs de mes positions qui se trouvent dans le vecteur, j'ai une incompréhension totale : http://paste.pocoo.org/show/br8v46Vr4Mssk5vYhWtp/

En effet, une position du style : (1,2) devient : (0,65535)

Quelqu'un aurait une explication à ce problème ?

Dj x-fuse

Nombre de messages : 658
Age : 27
Prénom : Jonathan
Statut : 4ième sécu
Localisation : IRL
Date d'inscription : 18/10/2008

Revenir en haut Aller en bas

Re: [LCP] Problème de vecteur

Message  L@rgo_XIII le Dim 19 Déc 2010, 17:42

J'ai peu du mal à comprendre "l'exemple" que tu donnes.

C'est le résultat de l'exécution de quel morceau de code ?

Ce qui est sûr, c'est que les valeurs que tu obtiens ne sont pas si aléatoire que ça ...
65635 = Valeur maximale pour un entier non signé sur 16 bits.

Lionel

L@rgo_XIII

Nombre de messages : 80
Age : 30
Prénom : Lionel
Statut : Etudiant en 3e année Réseau & Télécommunicatio
Localisation : Uccle
Date d'inscription : 20/09/2010

http://largoxiii.wordpress.com

Revenir en haut Aller en bas

Re: [LCP] Problème de vecteur

Message  smb le Dim 19 Déc 2010, 17:59

Dj x-fuse a écrit:Bonjour / soir à tous,

Dans le cadre du projet cephalopod j'utilise comme tout le monde des vecteurs. Afin de transférer d'une méthode à une autre les voisins d'une position donnée, j'utilise un vecteur de positions.
Mon problème proviens du fait que quand je veux récupérer les valeurs de mes positions qui se trouvent dans le vecteur, j'ai une incompréhension totale : http://paste.pocoo.org/show/br8v46Vr4Mssk5vYhWtp/

En effet, une position du style : (1,2) devient : (0,65535)

Quelqu'un aurait une explication à ce problème ?

Je crois que le titre du sujet devrait plutôt être : "Problème dans mon code".
Mais comme on ne dispose pas de ton code, ça va être difficile de t'aider !
santa

smb

Nombre de messages : 1035
Age : 64
Prénom : Stéphan
Statut : Don de sang, don de vie!
Localisation : Spy
Date d'inscription : 23/01/2007

Revenir en haut Aller en bas

Re: [LCP] Problème de vecteur

Message  nvs le Dim 19 Déc 2010, 18:54

L@rgo_XIII a écrit:Ce qui est sûr, c'est que les valeurs que tu obtiens ne sont pas si aléatoire que ça ...
65635 = Valeur maximale pour un entier non signé sur 16 bits.
ainsi que l'interprétation en représentation par position du motif codant -1 sur 16 bits codé en complément à deux, comme dans :
Code:
cout << static_cast<unsigned short> (short(-1)) << endl;
à condition que :
Code:
sizeof(short)
vaut 2.





alien

_________________

nvs

Nombre de messages : 5238
Age : 44
Prénom : Nicolas
Statut : prof
Localisation : bxl
Date d'inscription : 24/11/2005

http://nvansteenkiste.googlepages.com

Revenir en haut Aller en bas

Re: [LCP] Problème de vecteur

Message  L@rgo_XIII le Dim 19 Déc 2010, 19:19

Je dois reconnaitre que je n'avais pas fait ce rapport là Embarassed , d'ailleurs j'ai dû lire deux fois cette explication pour en comprendre la moitié.
Suspect

L@rgo_XIII

Nombre de messages : 80
Age : 30
Prénom : Lionel
Statut : Etudiant en 3e année Réseau & Télécommunicatio
Localisation : Uccle
Date d'inscription : 20/09/2010

http://largoxiii.wordpress.com

Revenir en haut Aller en bas

Re: [LCP] Problème de vecteur

Message  smb le Dim 19 Déc 2010, 19:37

@nvs @L@rgo_XIII

Super ! Mais en quoi cela apporte-t-il une solution au problème de notre brave Dj x-fuse ?
santa

smb

Nombre de messages : 1035
Age : 64
Prénom : Stéphan
Statut : Don de sang, don de vie!
Localisation : Spy
Date d'inscription : 23/01/2007

Revenir en haut Aller en bas

Re: [LCP] Problème de vecteur

Message  nvs le Dim 19 Déc 2010, 20:27

smb a écrit:@nvs @L@rgo_XIII

Super ! Mais en quoi cela apporte-t-il une solution au problème de notre brave Dj x-fuse ?
santa
personnellement, je tire un plan sur la comète Wink





silent

_________________

nvs

Nombre de messages : 5238
Age : 44
Prénom : Nicolas
Statut : prof
Localisation : bxl
Date d'inscription : 24/11/2005

http://nvansteenkiste.googlepages.com

Revenir en haut Aller en bas

Re: [LCP] Problème de vecteur

Message  Dj x-fuse le Dim 19 Déc 2010, 20:43

Reprenons le lien que j'ai posté. Vous avez une représentation du plateau à l'instant t.
Je souhaites récupérer un vecteur contenant les positions qui se trouvent dans le voisinage d'une position donnée (dans cet exemple, c'est la position centrale du plateau).
Code:
vector<Position> vPos = pl.getVoisins(p); // On récupère les voisins
for(unsigned short i=0; i<vPos.size(); i++)
   cout << "Position " << i << " : " << vPos.at(i).toString() << endl; // affichage des positions voisines
Plateau::getVoisins :
Code:
vector<Position> Plateau::getVoisins(Position p){
if(p.estValide()){
   vector<Position> positions;
   if(p.getY()-1 >= 0){ // top
      positions.push_back(Position(p.getX(), p.getY()-1));
   }
   if(p.getY()+1 < Y){ // down
      positions.push_back(Position(p.getX(), p.getY()+1));
   }
   if(p.getX()-1 >= 0){ // left
      positions.push_back(Position(p.getX()-1, p.getY()));
   }
   if(p.getX()+1 < X){ // right
      positions.push_back(Position(p.getX()+1, p.getY()));
   }
// A ce stade, le problème des positions avec un attribut à 65535 est déjà présent
   return positions;
}else
   throw "Position invalide : Plateau::getVoisins";

}
Position::toString
Code:
string Position::toString(){
stringstream out;
out << "(" << this->x+1 << "," << this->y+1 << ")";
return out.str();
}

Je ne vois pas où se trouve l'erreur...

Dj x-fuse

Nombre de messages : 658
Age : 27
Prénom : Jonathan
Statut : 4ième sécu
Localisation : IRL
Date d'inscription : 18/10/2008

Revenir en haut Aller en bas

Re: [LCP] Problème de vecteur

Message  smb le Dim 19 Déc 2010, 20:53

Et le code de ta classe Position et de estValide() ?
santa

smb

Nombre de messages : 1035
Age : 64
Prénom : Stéphan
Statut : Don de sang, don de vie!
Localisation : Spy
Date d'inscription : 23/01/2007

Revenir en haut Aller en bas

Re: [LCP] Problème de vecteur

Message  Dj x-fuse le Dim 19 Déc 2010, 21:33

smb a écrit:Et le code de ta classe Position et de estValide() ?
santa
Code:
Position::Position(unsigned short x, unsigned short y){
   this->x = x-1; // décalage de 1 car le vecteur commence à 0
   this->y = y-1;
}
Code:
bool Position::estValide(){
   return(this->x>=0 && this->x<X && this->y>=0 && this->y<Y);
}

Dj x-fuse

Nombre de messages : 658
Age : 27
Prénom : Jonathan
Statut : 4ième sécu
Localisation : IRL
Date d'inscription : 18/10/2008

Revenir en haut Aller en bas

Re: [LCP] Problème de vecteur

Message  smb le Dim 19 Déc 2010, 21:56

Je croyais avoir été clair : et les attributs de ta classe Position ?
santa

smb

Nombre de messages : 1035
Age : 64
Prénom : Stéphan
Statut : Don de sang, don de vie!
Localisation : Spy
Date d'inscription : 23/01/2007

Revenir en haut Aller en bas

Re: [LCP] Problème de vecteur

Message  Dj x-fuse le Dim 19 Déc 2010, 22:22

smb a écrit:Je croyais avoir été clair : et les attributs de ta classe Position ?
santa
Code:
unsigned short x;
unsigned short y;

Dj x-fuse

Nombre de messages : 658
Age : 27
Prénom : Jonathan
Statut : 4ième sécu
Localisation : IRL
Date d'inscription : 18/10/2008

Revenir en haut Aller en bas

Re: [LCP] Problème de vecteur

Message  smb le Dim 19 Déc 2010, 22:42

Dj x-fuse a écrit:
smb a écrit:Je croyais avoir été clair : et les attributs de ta classe Position ?
santa
Code:
unsigned short x;
unsigned short y;

Je m'en doutais un peu !
Si jamais ton programme instancie une Position avec 0 comme valeur d'un des paramètres (par exemple le paramètre pour x) , comme tu fais -1 pour donner la valeur à l'attribut x, x aura au final 65535 comme valeur qui est la valeur maximale d'un unsigned short.

Je crois qu'une simplification de ton code s'impose, du moins en ce qui concerne ta volonté de faire -1 pour je ne sais quelle raison !

santa

smb

Nombre de messages : 1035
Age : 64
Prénom : Stéphan
Statut : Don de sang, don de vie!
Localisation : Spy
Date d'inscription : 23/01/2007

Revenir en haut Aller en bas

Re: [LCP] Problème de vecteur

Message  nvs le Dim 19 Déc 2010, 23:00

smb a écrit:Je crois qu'une simplification de ton code s'impose, du moins en ce qui concerne ta volonté de faire -1 pour je ne sais quelle raison !
la raison est donnée en commentaire : le vecteur commence à 0 Suspect






santa :belgica:

_________________

nvs

Nombre de messages : 5238
Age : 44
Prénom : Nicolas
Statut : prof
Localisation : bxl
Date d'inscription : 24/11/2005

http://nvansteenkiste.googlepages.com

Revenir en haut Aller en bas

Re: [LCP] Problème de vecteur

Message  mvh le Dim 19 Déc 2010, 23:52

[HS ... probablement ?]
nvs a écrit:...
santa :belgica:
[/HS ... probablement ?]

_________________

La fête c'est nul sans Kidibul !
... (vieux proverbe local)



mvh

Nombre de messages : 5973
Age : 104
Prénom : Marcel VANHAELEN
Statut : (fin de bail)
Win 3.1 à reprendre
Localisation : Koekeliek de Baselberg
Date d'inscription : 06/12/2006

Revenir en haut Aller en bas

Re: [LCP] Problème de vecteur

Message  Dj x-fuse le Lun 20 Déc 2010, 00:15

En logique, on commencerais un plateau à partir de la position 1 jusqu'à la position n.
En programmation, les positions commencent à 0 et non à 1 d'où l'idée de faire -1 à la l'instanciation de la position, car la seule fois où je créerais une position sera quand l'utilisateur entre les coordonnées. Dans le cas contraire (instanciation au sein des méthodes métier par ex), alors ce sera le constructeur par recopie qui se chargera du boulot (c'est ici le prob).

Merci pour l'explication, je visualise mieux maintenant, je vais voir d'où peu bien provenir ce bug.

Dj x-fuse

Nombre de messages : 658
Age : 27
Prénom : Jonathan
Statut : 4ième sécu
Localisation : IRL
Date d'inscription : 18/10/2008

Revenir en haut Aller en bas

Re: [LCP] Problème de vecteur

Message  smb le Lun 20 Déc 2010, 11:28

nvs a écrit:
smb a écrit:Je crois qu'une simplification de ton code s'impose, du moins en ce qui concerne ta volonté de faire -1 pour je ne sais quelle raison !
la raison est donnée en commentaire : le vecteur commence à 0 Suspect
santa :belgica:

J'avais compris Nicolas !
Mais pourquoi ne pas commencer les Position à 0 ? Je dirais même plus, je verrais plus la notion de Position avec comme attributs 2 int, plutôt que 2 unsigned short. C'est je crois plus général et donc ça pourrait servir dans d'autres circonstances.
Les indices en logique qui commencent à 1 est source d'erreur lorsqu'on programme. Le bug dont il est question n'est-il pas une preuve de ce que j'avance ?
santa

smb

Nombre de messages : 1035
Age : 64
Prénom : Stéphan
Statut : Don de sang, don de vie!
Localisation : Spy
Date d'inscription : 23/01/2007

Revenir en haut Aller en bas

Re: [LCP] Problème de vecteur

Message  Dj x-fuse le Lun 20 Déc 2010, 13:18

smb a écrit:
nvs a écrit:
smb a écrit:Je crois qu'une simplification de ton code s'impose, du moins en ce qui concerne ta volonté de faire -1 pour je ne sais quelle raison !
la raison est donnée en commentaire : le vecteur commence à 0 Suspect
santa :belgica:

J'avais compris Nicolas !
Mais pourquoi ne pas commencer les Position à 0 ? Je dirais même plus, je verrais plus la notion de Position avec comme attributs 2 int, plutôt que 2 unsigned short. C'est je crois plus général et donc ça pourrait servir dans d'autres circonstances.
Les indices en logique qui commencent à 1 est source d'erreur lorsqu'on programme. Le bug dont il est question n'est-il pas une preuve de ce que j'avance ?
santa
Ca peut être le cas.

Problème Problem solved, merci !

Dj x-fuse

Nombre de messages : 658
Age : 27
Prénom : Jonathan
Statut : 4ième sécu
Localisation : IRL
Date d'inscription : 18/10/2008

Revenir en haut Aller en bas

Re: [LCP] Problème de vecteur

Message  Contenu sponsorisé Aujourd'hui à 07:11


Contenu sponsorisé


Revenir en haut Aller en bas

Voir le sujet précédent Voir le sujet suivant Revenir en haut


 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum