IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

Probleme de structure d'un graphe


Sujet :

C

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 25
    Points : 22
    Points
    22
    Par défaut Probleme de structure d'un graphe
    Bonjour, je suis étudiant en Informatique et je dois creer une structure permettant de simuler un graphe en C.
    Seulement voila, je dois utiliser un fichier en-tete donné par le prof qui donne une erreur a la compilation, et j'ai beau me creuser la tête , je voit pas d'ou ca peut venir...
    apparement, ca vient de la structure censée representé le graphe, dont voici le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    typedef struct maillon {
            SId s;/*sommet stocké dans le maillon*/
            struct maillon *suivant;}
     
    typedef struct {
                  int n;/*nombre de sommets*/
                  MAILLON **listes; /*liste d'adjacence*/
                  }GRAPHE;
    Si quelqu'un pouvait me dire le pourquoi de mon erreur ça serait sympa, devC++ se contente d'avancer une "syntax error before MAILLON"

  2. #2
    Expert éminent

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Points : 6 911
    Points
    6 911
    Par défaut
    Tu es sur que tu as copie tout le code du prof? Ou se trouve definit MAILLON?

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 25
    Points : 22
    Points
    22
    Par défaut
    J'ai copié le code du prof au caracteres près(sauf le d minuscule de SID, qui est une faute de frapper du a une modification)

    Le code n'est évidement pas entier,il manque la definition de SID et des fonctions.Le code en entier donne ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    #ifndef _GRAPHE_LISTE
    #define _GRAPHE_LISTE1
     
    typedef int SID; /*Renommage des entiers pour nommer les sommets*/
     
    typedef struct maillon {
            SID s;/*sommet stocké dans le maillon*/
            struct maillon *suivant;}
     
    typedef struct {
                  int n;/*nombre de sommets*/
                  MAILLON **listes; /*liste d'adjacence*/
                  }GRAPHE;
     
    void reservation_en_memoire(int n,GRAPHE *g);
    /*reserve l'espace mémoire necessaire pour representer un graphe comportant n sommets*/
     
    void liberation_memoire(GRAPHE *g);
    /*libere la mémoire occupée par le graphe g */
     
    void cree_graphe_vide(GRAPHE *g);
    /*initialise la structure de telle sorte qu'elle represente un graphe sans arc */
     
    void ajouter_connection(GRAPHE *g,SID j,SID i);
    /*ajoute un arc entre le sommet i et le sommet j du graphe g*/
     
    void retirer_connection(GRAPHE *g,SID j,SID i);
    /*retire l'arc entre le sommet i et le sommet j du graphe g*/
     
    int est_adjacent(GRAPHE *g,SId i,SID j);
    /*retourne 1 si j est un sucesseur de i dans g, sinon 0 */
     
    int recupere_sommet_adjacent(GRAPHE *g,SId i,SID *adj,int *nbadj);
    /*recupere dans un tableau adj les sommets adjacents a i dans g et fourni egalement le 
    nombre de sommets adjacents dans nbad */
     
    void copie_graphe(GRAPHE *g1,GRAPHE *g2);
    /*copie le graphe g1 dans le graphe g2*/
     
    void lire_graphe(char *nom,GRAPHE *g);
    /*lit et range dans g le contenu du fichier nom */
     
    void ecrit_graphe(GRAPHE *g,char *nom);
    /*Ecrit le graphe g dans le fichier nom */
     
    #endif
    L'histoire du maillon me semble justement etrange: la structure maillon est définie au dessus de la structure graphe, cependant la fin de la structure me semble bizarre (pas de ; pour delimiter la fin de la definition).Je cherche comment redefinr ce "maillon" de façon a faire fonctionner sans defigurer la structure orignale du prof mais je bute

  4. #4
    Expert éminent

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Points : 6 911
    Points
    6 911
    Par défaut
    Fais pour maillon comme pour graphe.

    Ta garde d'inclusion ne semble aussi bizarre. Normalement c'est la meme macro qui est utilisee.

  5. #5
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 381
    Points : 41 582
    Points
    41 582
    Par défaut
    Et il manque un point-virgule après la structure maillon...

  6. #6
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par Jean-Marc.Bourguet
    Fais pour maillon comme pour graphe.

    Ta garde d'inclusion ne semble aussi bizarre. Normalement c'est la meme macro qui est utilisee.
    C'est même carrément faux, car ça ne protège pas du tout et le nom est réservé. Il voulait peut être faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    #ifndef H_GRAPHE_LISTE
    #define H_GRAPHE_LISTE 1
    ... 
    #endif
    Qui a peut être un intérêt dans des cas que je ne connais pas (n° de version ?...)

  7. #7
    Expert éminent

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Points : 6 911
    Points
    6 911
    Par défaut
    Citation Envoyé par Emmanuel Delahaye
    C'est même carrément faux, car ça ne protège pas du tout et le nom est réservé.
    Exact, mais la je ne suis pas sur que le prof ne soit pas le coupable.

    Il voulait peut être faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    #ifndef H_GRAPHE_LISTE
    #define H_GRAPHE_LISTE 1
    ... 
    #endif
    Qui a peut être un intérêt dans des cas que je ne connais pas (n° de version ?...)
    J'avais pas pense a cela. Il y a peut-etre un interet que je ne connais pas plus que toi.

  8. #8
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par Aurelienjjj
    J'ai copié le code du prof au caracteres près
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    #ifndef _GRAPHE_LISTE
    #define _GRAPHE_LISTE1
    #endif
    Apprends à copier, ou alors, change de prof, et vite... Ou alors, fait lui lire ça :

    http://emmanuel-delahaye.developpez.com/codage.htm

  9. #9
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par Aurelienjjj
    Seulement voila, je dois utiliser un fichier en-tete donné par le prof qui donne une erreur a la compilation
    Si tu présentais ton code selon des standards plus courants,

    http://emmanuel-delahaye.developpez....tm#indentation

    tu verrais tout de suite qu'il en manque la moité :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    typedef struct maillon
    {
       SId s;                       /*sommet stocké dans le maillon */
       struct maillon *suivant;
    }
    /* -ed- manque un identificateur et un ';' 
    Ma boule de cristal me parle de 'MAILLON;' */
     
    typedef struct
    {
       int n;                       /*nombre de sommets */
       MAILLON **listes;            /*liste d'adjacence */
    }
    GRAPHE;

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 25
    Points : 22
    Points
    22
    Par défaut
    Citation Envoyé par Emmanuel Delahaye
    Change de prof. Et vite... Ou alors, fait lui lire ça :

    http://emmanuel-delahaye.developpez.com/codage.htm
    Hu Hu, j'aurai aimé mais trop tard
    J'ai essayé vos differentes façons de declarer GRAPHE_LISTE, mais aucune ne semble reellement resoudre l'affaire, les erreurs restant les mêmes.

    j'ai aussi isolé cet en-tête, afin de tester si cette erreur n'était pas extérieur (j'avais par exemple un conflit de déclaration de SID parmis mes erreurs)

    Pour le ; qui manque a la fin de Maillon, j'ai un warning , mais rien de plus.L'ajouter n'enraille par les erreurs syntaxiques de la page qui provient manifestement de la structure GRAPHE (erreur quasiment a chaque appel de cette dernière).

    Edit: un "typedef struct {... } maillon; produit les mêmes erreurs que le code original

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 25
    Points : 22
    Points
    22
    Par défaut
    Oups, problème résolu : il fallait mettre MAILLON , tout en majuscule a la fin, et non "maillon"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    typedef struct {
          SID s;/*sommet stocké dans le maillon*/
            struct maillon *suivant;
            }MAILLON;
    Marche parfaitement a la compilation.Merci a vous

  12. #12
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par Aurelienjjj
    Oups, problème résolu : il fallait mettre MAILLON , tout en majuscule a la fin,
    C'est ce que ma boule de cristal me répétait en boucle depuis une demi-heure... Merci d'avoir trouvé, ça va me reposer...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [C# 2.0] probleme de Structure
    Par herrs dans le forum C#
    Réponses: 4
    Dernier message: 25/11/2006, 23h03
  2. [XSLT] Probleme de structure de fichier xsl
    Par ben23 dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 17/07/2006, 10h46
  3. C++ - Probleme avec structure et template
    Par vdumont dans le forum Langage
    Réponses: 3
    Dernier message: 21/03/2006, 15h32
  4. Probleme taille structure / parsing tag mp3
    Par lucas_sophia dans le forum C
    Réponses: 6
    Dernier message: 19/03/2006, 16h56
  5. Réponses: 3
    Dernier message: 28/09/2003, 17h08

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo