[CPP] projet Cephalopod

Page 3 sur 4 Précédent  1, 2, 3, 4  Suivant

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

Re: [CPP] projet Cephalopod

Message  Dj x-fuse le Sam 11 Déc 2010, 13:33

Quel est le message d'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: [CPP] projet Cephalopod

Message  smb le Sam 11 Déc 2010, 15:40

@didi Tu resteras toujours un petit comique !

Tu parles d'une méthode qui pose problème lesVoisin et tu n'en donnes pas le code.
Je parie que cette méthode en appelle d'autres, dont tu ne donneras pas le code non plus.

Il faut être absolument très fort pour t'aider !


Rolling Eyes

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

vector probleme memoire ( segmentation fault)

Message  Aftab007 le Sam 11 Déc 2010, 16:51

Bonjour, voila je voudrais placer des entiers dans mon vecteur de vecteur d'entiers , à partir d ' un vecteur d' entier.

C 'est un test que je fais avant de l appliquer concrettement au jeux Cephalopade , c pour cela que je post ma question ici , j'èspère que je fais bien :p

Code:



#include <iostream>
#include <vector>

using namespace std;

int main() {

   vector<vector<int> > choixDesEntiers(1);
   vector<int> v;

   v.push_back(0);
   v.push_back(1);
   v.push_back(2);
   v.push_back(3);

   unsigned int i = 0;
   unsigned int j = i + 1;
   int k = 0;
   unsigned int l = j + 1;

   while (i < v.size() - 2) {

      while (j < v.size() - 1) {

         while (l < v.size()) {
            choixDesEntiers[k].push_back(v[i]);
            choixDesEntiers[k].push_back(v[j]);
            choixDesEntiers[k].push_back(v[l]);

            k++;
            l++;
         }
         j++;

         choixDesEntiers[k].push_back(v[i]);
         choixDesEntiers[k].push_back(v[j]);
         choixDesEntiers[k].push_back(v[l - 1]);

         k++;
         j++;
      }
      i++;
      choixDesEntiers[k].push_back(v[i]);
      choixDesEntiers[k].push_back(v[j - 1]);
      choixDesEntiers[k].push_back(v[l - 1]);
      i++;
   }


J ai une segmentation fault a l execution , je pensse bien faire, a chaque fois que j utilise push back , la taille du vecteur augmente de 1 si j ai bien compris.
Enfin voila si vous sauriez m eclairer , merci .




Aftab007

Nombre de messages : 85
Age : 28
Prénom : Aftab
Date d'inscription : 27/11/2008

Revenir en haut Aller en bas

Re: [CPP] projet Cephalopod

Message  didi le Sam 11 Déc 2010, 16:58


avant tous les ptits simplification par rapport mes code

* j'ai un plateau de Des par defaut le plateau est rempli uvec un De qui a le face 0;
* la classe plateau contient les methodes donne le voisin (la position ) qui se trouve au NORD,SUD à l'EST,àl'OUEST
parraport une position donnée;


Code:
vector<Position> Plateau::lesVoisin(Position unePosition)   {
   vector<Position>tab;
      for (int i = 1;i <= 4;i++)   {
      switch (i)   {
      case 1 :  if (this->getDe(voisinNord( unePosition)).getFace()  != 0)   {
               tab.push_back(voisinNord( unePosition)) ;
               }
               break;
      case 2 : if (this ->getDe(voisinSud( unePosition)).getFace() != 0)   {
               tab.push_back(voisinSud(unePosition));
                  }
               break;

      case 3 : if (this->getDe(voisinEst( unePosition)).getFace() != 0)   {
               tab.push_back(voisinEst( unePosition));
               }
               break;
      case 4 : if(this->getDe(voisinOuest( unePosition)).getFace()  != 0)      {
               tab.push_back(voisinOuest( unePosition));
               }
            break;
      }
   }
   return tab;
}

un example la methode Position voisinSud(Position unePosition);

Code:
Position Plateau::voisinSud(Position unePosition)   {
   Position sud;
   unsigned int uneVal = 0;
   if(!estAuSud(unePosition))   {
      sud.setLigne((unePosition.getLigne() +1));
      sud.setColonne(unePosition.getColonne());
      uneVal = getDe(sud).getFace();
      }
   return sud;
}

(il y a aussi des methode qui retourne une bool si une position se trouve
estAuNord ,estALEst, estAuSud,estAlOuest


désole .. Smile

@didi Tu resteras toujours un petit comique !
didi aime ça ..Smile

didi

Nombre de messages : 215
Prénom : Dinesh
Statut : Smile
Date d'inscription : 21/01/2009

Revenir en haut Aller en bas

Re: [CPP] projet Cephalopod

Message  smb le Sam 11 Déc 2010, 17:26

@Aftab007

C'est normal !

Tu déclares un vector de vector comme ceci : vector<vector<int> > choixDesEntiers(1);

Il s'agit donc d'un "tableau" à 2 dimensions, d'une rangée vide (0 colonne).
Si tu fais choixDesEntiers.size() tu auras 1.
Si tu fais choixDesEntiers[0].size() tu auras 0.

Tu fais plusieurs push_back dans la 1ière rangée (puisque k ==0).
Ensuite tu incrémentes k qui passe à 1.
Mais il n'y a pas de 2ième rangée, donc SIGENV dès que tu fais push_back dans choixDesEntiers[1]

J'avoue ne pas trop bien comprendre ce que tu veux faire.


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: [CPP] projet Cephalopod

Message  nvs le Sam 11 Déc 2010, 18:54

Aftab007 a écrit:
Code:
#include <iostream>
#include <vector>

using namespace std;

int main() {

   vector<vector<int> > choixDesEntiers(1);
   vector<int> v;

   v.push_back(0);
   v.push_back(1);
   v.push_back(2);
   v.push_back(3);

   unsigned int i = 0;
   unsigned int j = i + 1;
   int k = 0;
   unsigned int l = j + 1;

   while (i < v.size() - 2) {

      while (j < v.size() - 1) {

         while (l < v.size()) {
            choixDesEntiers[k].push_back(v[i]);
            choixDesEntiers[k].push_back(v[j]);
            choixDesEntiers[k].push_back(v[l]);

            k++;
            l++;
         }
         j++;

         choixDesEntiers[k].push_back(v[i]);
         choixDesEntiers[k].push_back(v[j]);
         choixDesEntiers[k].push_back(v[l - 1]);

         k++;
         j++;
      }
      i++;
      choixDesEntiers[k].push_back(v[i]);
      choixDesEntiers[k].push_back(v[j - 1]);
      choixDesEntiers[k].push_back(v[l - 1]);
      i++;
   }

smb a écrit:J'avoue ne pas trop bien comprendre ce que tu veux faire.
alors là, je plussoie stéphan monbaliu. quel objectif poursuis-tu ? pourrais-tu donner le contenu que tu espère donner à choixDesEntiers ? un truc du style :
12
22 23 -34
-23 44 44 123456
-2 0 2778 44
34223 344455433211223344555 45 44
0 0 0 0









flower

_________________

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: [CPP] projet Cephalopod

Message  nvs le Sam 11 Déc 2010, 19:01

didi a écrit:désole .. Smile
et, en fait, quel est le problème ?








Suspect

_________________

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: [CPP] projet Cephalopod

Message  didi le Sam 11 Déc 2010, 19:33

dans le classe plateau il ya une methode :

Code:
Code:
 vector<Position> lesVoisin(Position unePosition);



quand j'appelle cette methode apartir de classe Joueur
( via la methode jouer(class Etat & unEtat));
il y d'erreur execution


mais je tester cette methode dans le main ça fontionne bien

main :

Code:
int main()  {
  Position P1(3,3),P2(3,2),P3(2,3),P4(3,4),P5(4,3);
  Etat etat ;
  vector<Position>vect;
  Plateau tab;
  Joueur moi;
  Joueur toi;
  De uneDe(BLUE,5);
  tab.placerUnDe(P1,uneDe);
  etat = Etat (&tab,moi,toi);
  etat.getPlateau().placerUnDe(P1,uneDe);
  etat.getPlateau().placerUnDe(P2,uneDe);
  etat.getPlateau().placerUnDe(P3,uneDe);
  etat.getPlateau().placerUnDe(P4,uneDe);
  etat.affiche();

  vect = etat.getPlateau().lesVoisin(P1); // il n'y a pas erreur à cette ligne
    cout << "\nparcour des voisins de point P1 : \n";
  for(unsigned int i = 0; i <vect.size();i++)  {
      vect[i].affiche();
  }

  moi.jouerUnCoup(etat); // erruer d'execution à cette ligne
  return 0;

}

resultats :
Code:
parcour des voisins de point P1 :
 (2,3)
 (3,4)
 (3,2)
erreur d'execution comme ici

didi

Nombre de messages : 215
Prénom : Dinesh
Statut : Smile
Date d'inscription : 21/01/2009

Revenir en haut Aller en bas

Re: [CPP] projet Cephalopod

Message  Aftab007 le Sam 11 Déc 2010, 19:50

Voila merci pour la réflexion , j ai compris mon erreur , jai pu le rêgler aisément Very Happy

En faiiite cette exercice me permettais juste de savoir si j arrive a trouver toute les possibilité possible par paquet de 3 ... sa fonctionne avec des entiers donc je suis assez content :p

donc avec 0 1 2 3 =>

012
013
023
123


Dernière édition par Aftab007 le Sam 11 Déc 2010, 19:54, édité 1 fois

Aftab007

Nombre de messages : 85
Age : 28
Prénom : Aftab
Date d'inscription : 27/11/2008

Revenir en haut Aller en bas

Re: [CPP] projet Cephalopod

Message  nvs le Sam 11 Déc 2010, 19:51

didi a écrit:erreur d'execution comme ici
vérifie bien que tu ne débordes pas des tes vectors. éventuellement, remplace les [] par l'appel de la méthode at. cette dernière lève une exception et donc la console d'eclipse t'indiquera qu'une exception out_of_range n'est pas gérée, si c'est un débordement de vector à l'origine du problème.








Basketball

_________________

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: [CPP] projet Cephalopod

Message  didi le Sam 11 Déc 2010, 20:06

merci j'utiliserai at plutôt que [] mais je sais l'erreur
viens pas de là car j'ai bien parcourir le vector sans erreur d'execution ...
mais
quand je suis dans la methode
jouer(class Etat & unEtat));
erreur d'execution à cette ligne ............!!!!!!!!
Code:
vect = unEtat.getPlateau().lesVoisin(pos);

mais dans le main
il n'ya pas d'erreur d'execution ...
Code:
vect = etat.getPlateau().lesVoisin(P1);

pourtant je fais le même manipulation ..

mais la variable type Etat est déclaré differement
dans le class Joueur
la declaration est :
jouer(class Etat & unEtat))

dans le main :
Etat etat;


peut être le problem viend de la declaration .???????????

didi

Nombre de messages : 215
Prénom : Dinesh
Statut : Smile
Date d'inscription : 21/01/2009

Revenir en haut Aller en bas

Re: [CPP] projet Cephalopod

Message  nvs le Sam 11 Déc 2010, 20:27

didi a écrit:erreur d'execution à cette ligne ............!!!!!!!!
Code:
vect = unEtat.getPlateau().lesVoisin(pos);

mais dans le main
il n'ya pas d'erreur d'execution ...
Code:
vect = etat.getPlateau().lesVoisin(P1);
et quelle est la différence entre
Code:
pos
et
Code:
P1





Question Exclamation Question Exclamation Exclamation Question Question Question Question Question Question Question Exclamation Question Exclamation Question Question Exclamation Question Question Exclamation Exclamation Question

_________________

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: [CPP] projet Cephalopod

Message  didi le Sam 11 Déc 2010, 20:52

et quelle est la différence entre


Code:
 pos

et


Code:
P1
P1 est :

Code:
Position P1(3, 3);

pos est :
Code:
unsigned int ligne = 2;
unsigned int colonne = 2;
Position pos;
pos = Position(ligne,colonne);

didi

Nombre de messages : 215
Prénom : Dinesh
Statut : Smile
Date d'inscription : 21/01/2009

Revenir en haut Aller en bas

Re: [CPP] projet Cephalopod

Message  nvs le Sam 11 Déc 2010, 21:01

et
Code:
getPlateau()
donne quoi ?





I love you

_________________

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: [CPP] projet Cephalopod

Message  didi le Sam 11 Déc 2010, 21:05

nvs a écrit:et
Code:
getPlateau()
donne quoi ?





I love you

class etat a 3 attributs :

Code:
class Etat   {
private :
   Plateau   *plateau ;
   Joueur joueurCourant ;
   Joueur joueurGagnant ;
..

getPlateau() :

Code:
Plateau& Etat::getPlateau() {
   return *plateau;
}

didi

Nombre de messages : 215
Prénom : Dinesh
Statut : Smile
Date d'inscription : 21/01/2009

Revenir en haut Aller en bas

Re: [CPP] projet Cephalopod

Message  nvs le Sam 11 Déc 2010, 21:49

et
Code:
lesVoisin
donne quoi ?







Idea

_________________

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: [CPP] projet Cephalopod

Message  didi le Sam 11 Déc 2010, 21:55

nvs a écrit:et
Code:
lesVoisin
donne quoi ?

la prototype de lesVoisin :
Code:
vector<Position> lesVoisin(Position unePosition);

la methode :
Code:
vector<Position> Plateau::lesVoisin(Position unePosition) {
   vector<Position> tab;
   for (int i = 1; i <= 4; i++) {
      switch (i) {
      case 1:
         if (this->getDe(voisinNord(unePosition)).getFace() != 0) {
            tab.push_back(voisinNord(unePosition));
         }
         break;
      case 2:
         if (this ->getDe(voisinSud(unePosition)).getFace() != 0) {
            tab.push_back(voisinSud(unePosition));
         }
         break;

      case 3:
         if (this->getDe(voisinEst(unePosition)).getFace() != 0) {
            tab.push_back(voisinEst(unePosition));
         }
         break;
      case 4:
         if (this->getDe(voisinOuest(unePosition)).getFace() != 0) {
            tab.push_back(voisinOuest(unePosition));
         }
         break;
      }
   }
   return tab;
}

didi

Nombre de messages : 215
Prénom : Dinesh
Statut : Smile
Date d'inscription : 21/01/2009

Revenir en haut Aller en bas

Re: [CPP] projet Cephalopod

Message  smb le Dim 12 Déc 2010, 08:53

M. Vansteenkiste aurait-il également perdu patience ?

Et voisinNord, voisinSud, voisinEst et voisinOuest, ça donnent quoi ?

Et getDe ça donne quoi ?

Question

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: [CPP] projet Cephalopod

Message  nvs le Dim 12 Déc 2010, 10:22

smb a écrit:M. Vansteenkiste aurait-il également perdu patience ?
disons que je suis perdu face à la complexité labyrinthique du code de didi...

@didi : dans la mesure où il est sûrement plus prudent de ne pas révéler ici l'entièreté de tes sources, et dans la mesure où tout semble se tenir, tel un écheveau pas loin de l'inextricable, je te conseille de te tourner vers ton professeur de laboratoire lors de la prochaine séance et de lui déballer la plénitude de ton code en toute confidentialité Exclamation









pirat

_________________

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: [CPP] projet Cephalopod

Message  Wark le Dim 12 Déc 2010, 10:42

nvs a écrit:@didi : dans la mesure où il est sûrement plus prudent de ne pas révéler ici l'entièreté de tes sources, et dans la mesure où tout semble se tenir, tel un écheveau pas loin de l'inextricable, je te conseille de te tourner vers ton professeur de laboratoire lors de la prochaine séance et de lui déballer la plénitude de ton code en toute confidentialité Exclamation

Je vous ai connu plus investigateur ! Serait-ce l'âge ? Laughing

Wark

Nombre de messages : 682
Age : 29
Prénom : Cédric
Statut : Diplômé 2010
Localisation : Braine l'alleud
Date d'inscription : 04/02/2008

Revenir en haut Aller en bas

Re: [CPP] projet Cephalopod

Message  iCart le Dim 12 Déc 2010, 10:55

nvs a écrit:je te conseille de te tourner vers ton professeur de laboratoire

<troll> c'est pas gentil pour son professeur de laboratoire </troll>

iCart

Nombre de messages : 58
Age : 27
Prénom : Sylvain
Statut : Echappé 2013
Date d'inscription : 09/12/2009

Revenir en haut Aller en bas

Re: [CPP] projet Cephalopod

Message  nvs le Dim 12 Déc 2010, 11:00

iCart a écrit:
nvs a écrit:je te conseille de te tourner vers ton professeur de laboratoire

<troll> c'est pas gentil pour son professeur de laboratoire </troll>
[hs]
non, mais c'est sa job, comme on dit au canada Wink

et puis, plus on est de fous, plus on rit...
[/hs]

c'est un constat : il y a des problèmes qui ne peuvent pas être résolus en un temps décent via ce forum, alors qu'irl, ça peut se faire en une couple d'heures.










Mad

_________________

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: [CPP] projet Cephalopod

Message  mvh le Dim 12 Déc 2010, 11:58

[HS]
En espérant que les petits agacements actuels ne sonnent pas le glas de la fin des Week-End Cpp sur fora ...
... un peu de douceur :
... dans ce monde de brute de l'informatique pour mastard !
[/HS]

_________________

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: [CPP] projet Cephalopod

Message  smb le Dim 12 Déc 2010, 15:37

smb a écrit:(...)

Et voisinNord, voisinSud, voisinEst et voisinOuest, ça donnent quoi ?

Et getDe ça donne quoi ?

Question

Je subodore néanmoins que la non conformité au déroulement harmonieux de la prose cépépéienne de notre ami Didi peut émaner d'une de ces méthodes.

Wink

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: [CPP] projet Cephalopod

Message  didi le Dim 12 Déc 2010, 19:00

j'ai commencé debuggur .(afficher dans chaque methode ..)
et j'ai trouvé que l'erreur d'execution vien de la déclaration
de la Position (le constructeur par defaut )

dans la main :
Code:

int main() {
   Position P6;
   P6.affiche();
   P6.getLigne();
   return 0;

}
les resultats :
Code:
je suis en (0,0)
dans le getLigne ligne est : 4294967295

constructeur par default :
Code:
Position::Position()   {
   ligne = 0;
   colonne = 0;
}


la methode getLigne() :
Code:

unsigned int Position::getLigne()   {
   cout <<"\ndans le getLigne ligne est : " << ligne-1 << "\n";
   return ligne-1;
}
return ligne-1;
j'affiche les indice de mon plateau à partir de 1 et non 0

la methode affiche :
Code:
void Position::affiche()   {
   cout << "je suis en (" << ligne << "," << colonne << ")" << endl;
}

evidement quand j'appelle la methode getLigne() j'ai débordé la taille d'un vector ...
mais je ne sais pas corriger ... Sad (j'ai essayé avec pointer de Position la même chose )


didi

Nombre de messages : 215
Prénom : Dinesh
Statut : Smile
Date d'inscription : 21/01/2009

Revenir en haut Aller en bas

Re: [CPP] projet Cephalopod

Message  Contenu sponsorisé Aujourd'hui à 18:56


Contenu sponsorisé


Revenir en haut Aller en bas

Page 3 sur 4 Précédent  1, 2, 3, 4  Suivant

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