RECHERCHER :
COMMUNAUTE MP
Identifiez vous ...
Devenir Membre
J'ai oublié mon MDP
DOMAINE MP
Bavardages
Langages Généraux
Langages Web
Langages DotNet
Autres langages
Dev. Jeux Video
Sécurité
Sys. Exploitation
Graphismes
Logiciels
Réseaux
Bases de données
Méthodologies
Emplois High-tech
Aide juridique
Articles juridiques
FORUM
Index des forums
Ajouter un sujet
Rechercher sujet
Contact Responsable
Devenir modérateur
CHAT MP IRC
Votre pseudo ...
Serv: irc.irc-land.org
Chan: #MoteurProg
PARTICIPER
Plus de 3500 emplois.
Rechercher un job
Déposez votre CV
Emplois High-tech

Visiteur MP

 Pb graphe

Forum : C++
Sous Catégorie : Aucune
Type du sujet : Sujet Normale
FAQ : FAQ C++

SUIVI DES SUJETS PAR MAIL

SUIVI PAR MAIL INACTIF

RESOLUTION DU SUJET SUJET NON RESOLU
BLOQUAGE DU SUJET SUJET ACTIF
APPARTENANCE A LA FAQ N'APPARTIENT PAS A LA FAQ


PAGE : [1]

POSTER UN NOUVEAU SUJET REPONDRE A CE SUJET

FORUM C++

PREMIERE PAGE

PAGE PRECEDENTE

Page précedente

Page suivante

PAGE SUIVANTE

DERNIERE PAGE
fahmi
Membre newbie
Inscrit : 30/01/2007
Messages : 31
Message
#140395
Posté le 09/08/07 à 13:07
Salut à tous,
Je suis en train d'implémenter un graphe basé sur les listes d'adjacence.
En première étape, j'ai essayé d'initialiser le tableau de pointeurs sur les sommets, mais j'ai l'impression que ça ne marche pas.

#include <string> #include <iostream> using namespace std; class noeud { public: int n ; //n° de l’état destinataire char a ; //caractère de la transition conduisant à cet état. noeud *suiv1 ; //on utilise une liste chainée. noeud *suiv2 ; //à double pointeurs }; class automate { private: int n; //nbre de noeud noeud *tab[]; public: void init_tab(int m); void ajouter_noeud(noeud); }; void automate::init_tab(int m) { for (int i=0;i>m;i++) { tab[i]=new noeud(); tab[i]->n=i; cout << " I's ok "; } } int main(void) { int n; //Création de notre graphe automate *aut= new automate(); cout << "Tapez le nombre de noeuds de l'automate : "; cin >> n; (*aut).init_tab(n); return 0; }

En fait lors de l'exécution de ce bout de code je remarque que le message "I's ok" n'est pas affiché donc la méthode d'initialisation n'est pas atteinte.
Aidez moi SVP.

HAUT DE PAGE

PROFIL MEMBRE LUI ECRIRE 

Publicité
Inscrit : X
Messages : X
Message
#Aucun

HAUT DE PAGE

  

rainbow
Membre du club
Chef de projet(s) :
- IA savane
- Team MoteurProg

Avatar de rainbow
Inscrit : 26/05/2006
Messages : 933
Message
#140408
Posté le 09/08/07 à 15:57
il y a un problème dans ta boucle:
tu mets:

for (int i=0;i>m;i++)

Le signe de la condition de sortie est faux. i étant dès le début de la boucle inférieur à m, le programme n'exécute pas la boucle.
__________________________
............ Curtis: RTS 3D ..............
......Image
........... TeamMoteurProg...........

HAUT DE PAGE

PROFIL MEMBRE LUI ECRIRE 

fahmi
Membre newbie
Inscrit : 30/01/2007
Messages : 31
Message
#140413
Posté le 09/08/07 à 16:48
Merci beaucoup pour votre aide.
Maintenant je veux travailler avec les vecteurs au lieu des tableaux.
J'ai fais ces petits changements mais qqs remarques à dire.

class automate { private: int n; //nbre de noeud vector<noeud*> tab; public: void init_tab(int m); void ajouter_noeud(noeud); }; void automate::init_tab(int m) { noeud *e; for (int i=0;i<m;i++) { e=new noeud(); e->n=i+1; tab.push_back(e); } delete e; //on les affiche, toujours sur le meme principe ... for(int j=0; j<tab.size(); j++) { cout << tab[j]->n << "\n" ; } }

Lors de l'exécution l'ordre d'affichage affiche le 0 en dernier lieu:
Tapez le nombre de noeuds de l'automate : 7
1
2
3
4
5
6
0
et parfois il m'affiche n'importe quoi :
Tapez le nombre de noeuds de l'automate : 5
1
2
3
4
159039992
Est ce que ça peut s'expliquer?
merci d'avance.

HAUT DE PAGE

PROFIL MEMBRE LUI ECRIRE 

fahmi
Membre newbie
Inscrit : 30/01/2007
Messages : 31
Message
#140475
Posté le 10/08/07 à 12:47
Voila j'ai surmonté ce problème là:C'est au niveau de la destruction de l'objet, il doit se placer dans le destructeur de la classe.
Mais maintenant j'ai un nouveau pb au cours de l'exécution de mon petit code.
J'ai essayer d'ajouter des noeuds à mon graphe mais une erreur de segmentation se génère.
Est ce que qq'un peut m'expliquer la signification de cette erreur?
Merci d'avance.

HAUT DE PAGE

PROFIL MEMBRE LUI ECRIRE 

screetch
Nouveau membre
Inscrit : 13/08/2007
Messages : 17
Message
#140678
Posté le 13/08/07 à 11:41
cela signifie en general que tu touches a de la memoire non initialisee, par exemple un noeud n'a pas initialisé son/ses fils et tu essayes de les lire quand meme => kaboom. Pour les trouver, il faut utiliser un debugger qui te montrera précisément dans ton source quelle ligne fait péter le programme, et tu pourras ensuite voir pourquoi ce n'est pas initialisé ou...ce que tu as fait de mal quoi.

HAUT DE PAGE

PROFIL MEMBRE LUI ECRIRE 
POSTER UN NOUVEAU SUJET REPONDRE A CE SUJET

PREMIERE PAGE

PAGE PRECEDENTE Page précédente

Page suivante

PAGE SUIVANTE DERNIERE PAGE

FORUM C++



    PAGE : [1]



.: Site Web développé par Julien Pichot et l'équipe MPWG avec www.evolvia-web.com :.