gargourifahmi
Messages postés31Date d'inscriptiondimanche 23 juillet 2006StatutMembreDernière intervention 3 décembre 2008
-
9 août 2007 à 12:44
HSylvio
Messages postés116Date d'inscriptionjeudi 22 juillet 2004StatutMembreDernière intervention14 juin 2012
-
10 août 2007 à 14: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>
[code=cpp]#include <string>
#include
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.
Pistol_Pete
Messages postés1053Date d'inscriptionsamedi 2 octobre 2004StatutMembreDernière intervention 9 juillet 20137 9 août 2007 à 13:30
Salut,
Pour ton problème, tu as juste fait une erreur d'inatention.
Dans ton for, met plutot:
for(int i=0; i < m;i++)
Le deuxième paramètre du for permet ou non de rester dans la boucle.
Tu restera dans le for tant que i<m, sinon, il n'entre même pas dans la boucle.
Sinon une dernière petite chose, prend l'habitude de mettre un \n ou un endl à chaque fois que tu écris à l'écran. Ceci te permet de vider le buffer cache. Par conséquent la ligne est affiché immédiatement. Juste un petit exemple, si tu fais un seg fault juste après un cout sans endl, il y a 90 % de chance qu'il n'ai pas vidé le buffer cache. Tu ne verras donc rien à l'écran et tu penseras donc qu'il a craqué avant le cout.
gargourifahmi
Messages postés31Date d'inscriptiondimanche 23 juillet 2006StatutMembreDernière intervention 3 décembre 2008 10 août 2007 à 12:10
Maintenant j'ai avancé dans mon petit programme et j'ai rencontré une erreur de type:
Erreur de segmentation qu'est générée lors de l'exécution.
Est ce qq'un peut me l'expliquer.
Merci beaucoup.
HSylvio
Messages postés116Date d'inscriptionjeudi 22 juillet 2004StatutMembreDernière intervention14 juin 2012 10 août 2007 à 14:07
Ben cette erreur en général je l'ai eu paske j'utilisais un pointeur vers le vide, (tu vas trop loin dans ston tableau, ou un noeud n'existe pas et tu veux y accéder...)