Pb avec graphe en C++

gargourifahmi Messages postés 31 Date d'inscription dimanche 23 juillet 2006 Statut Membre Dernière intervention 3 décembre 2008 - 9 août 2007 à 12:44
HSylvio Messages postés 116 Date d'inscription jeudi 22 juillet 2004 Statut Membre Dernière intervention 14 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.

3 réponses

Pistol_Pete Messages postés 1053 Date d'inscription samedi 2 octobre 2004 Statut Membre Dernière intervention 9 juillet 2013 7
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.

A+
0
gargourifahmi Messages postés 31 Date d'inscription dimanche 23 juillet 2006 Statut Membre Derniè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.
0
HSylvio Messages postés 116 Date d'inscription jeudi 22 juillet 2004 Statut Membre Dernière intervention 14 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...)
0
Rejoignez-nous