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 avec liste chainée


Sujet :

C

  1. #1
    Membre régulier
    Inscrit en
    Novembre 2006
    Messages
    422
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 422
    Points : 113
    Points
    113
    Par défaut probleme avec liste chainée
    salut je viens de commencer la manipulation des listes chainées mais j'ai un probleme.je ne parvient pas a implementer la fonction ajoutertete, lors de la compilations visual 6 m'affiche "cannot convert from void* to struct cellule*".
    voila mon code:
    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
     
    #include <stdio.h>
    #include <stdlib.h>
     
    typedef struct cellule cellule;
    struct cellule
    {
    	int elmt;
    	cellule *suivant;
     
    };
    typedef cellule *listec ;
    /*
    int listeestvide(listec l);
    int debut(listec l);
    int fin(listec l);
    int suivant(listec l,int pos );
    int precedent(listec l,int pos);
    */
    void ajoutertete(listec l,int elmt);
    void main()
    {	
    		listec l=NULL;
    	}
    void ajoutertete(listec l,int elmt)
    {
    	cellule* cel;
    	cel=malloc(sizeof(cellule));//ça plante ici
     
    	cel->elmt=elmt;
    	cel->suivant=l;
    	l=cel;
     
    }

  2. #2
    Membre éclairé Avatar de crocodilex
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    697
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 697
    Points : 858
    Points
    858
    Par défaut
    Il y a de grande chance que tu compiles avec un compilateur C++.
    Vérifie que ton fichier n'a pas l'extension .cpp.
    Si c'est le cas, renommes ton fichier avec l'extension .c puis recompile...
    Software Failure. Press left mouse button to continue.
    Guru Meditation #0100000C.000FE800

  3. #3
    Membre régulier
    Inscrit en
    Novembre 2006
    Messages
    422
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 422
    Points : 113
    Points
    113
    Par défaut
    est ce que tu connais une option dans visual c++ qui permt de le faire ?sino la fonction est correcte ?
    merci

  4. #4
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Points : 6 498
    Points
    6 498
    Par défaut
    La fonction est incorrecte, car tu ne modifies l que dans la fonction, au sortir de celle-ci, l reprend sa valeur de départ, soit tu passes l'adresse de l
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    void ajoutertete(listec *l,int elmt)
    soit ta fonction renvoie une liste
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    listec ajoutertete(listec l,int elmt)
    Voici une possiblilté
    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
    listec ajoutertete(listec l,int elmt)
    {
    	cellule* cel;
    	cel=malloc(sizeof(cellule));//ça plante ici
            if (cel != NULL) // a tester absolument
            {
    	   cel->elmt=elmt;
    	   cel->suivant=l;
            }
            return cel;
    }
     
    // en C, main retourne un int
    int main(void)
    {	
    		listec l=NULL;
     
    }
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  5. #5
    Membre régulier
    Inscrit en
    Novembre 2006
    Messages
    422
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 422
    Points : 113
    Points
    113
    Par défaut
    je viens de renommer le fichier en .c j'ai recompilé et la c'est la misere ! Le compilateur me signale des fautes illogiques !

  6. #6
    Membre éclairé Avatar de crocodilex
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    697
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 697
    Points : 858
    Points
    858
    Par défaut
    Citation Envoyé par isoman
    est ce que tu connais une option dans visual c++ qui permt de le faire ?
    Désolé je ne connais pas C++. As-tu fais ce que j'ai dis dans mon premier post ?

    Citation Envoyé par isoman
    sino la fonction est correcte ?
    Grillé par Trap D....
    Software Failure. Press left mouse button to continue.
    Guru Meditation #0100000C.000FE800

  7. #7
    Membre éclairé Avatar de crocodilex
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    697
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 697
    Points : 858
    Points
    858
    Par défaut
    Citation Envoyé par isoman
    je viens de renommer le fichier en .c j'ai recompilé et la c'est la misere ! Le compilateur me signale des fautes illogiques !
    Ca n'aide pas beaucoup ça....
    Software Failure. Press left mouse button to continue.
    Guru Meditation #0100000C.000FE800

  8. #8
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    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 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Es-tu sûr que toutes les variables sont bien déclarées en début de bloc ?

    Montre un peu les erreurs que tu as...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  9. #9
    Expert confirmé
    Avatar de Thierry Chappuis
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2005
    Messages
    3 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Points : 5 360
    Points
    5 360
    Par défaut
    Citation Envoyé par isoman
    je viens de renommer le fichier en .c j'ai recompilé et la c'est la misere ! Le compilateur me signale des fautes illogiques !
    Quelles sont les erreurs et warnings indiqués par ton compilateur? A+

    Thierry
    "The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
    "If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow

    FAQ-Python FAQ-C FAQ-C++

    +

  10. #10
    Membre régulier
    Inscrit en
    Novembre 2006
    Messages
    422
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 422
    Points : 113
    Points
    113
    Par défaut
    j'ai resolu le probleme j'ai changé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    cellule *cel=malloc(sizeof(cellule));
    en
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    cellule *cel= (cellule*)malloc(sizeof(cellule));
    et en gardant l'extension .cpp
    merci

  11. #11
    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 isoman
    j'ai resolu le probleme <...> en gardant l'extension .cpp
    Pas du C. Le forum C++, c'est à coté.
    Pas de Wi-Fi à la maison : CPL

  12. #12
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    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 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Tu as choisi pile la mauvaise méthode, tu aurais du continuer en C et corriger les erreurs. Ou au moins, les poster pour qu'on t'aide à les corriger.

    Et en C++, on n'utilise plus "cellule *cel = (cellule*)malloc(sizeof(cellule));".
    Le cast à base de parenthèses, en C++, c'est le diable. À la place, il faut utiliser:
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  13. #13
    Expert éminent sénior
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 361
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 361
    Points : 20 381
    Points
    20 381
    Par défaut
    Citation Envoyé par crocodilex
    Il y a de grande chance que tu compiles avec un compilateur C++.
    Pas forcément c'est un simple problème de transtypage; l'erreur va être soulevée avec un compilo C également.

  14. #14
    gl
    gl est déconnecté
    Rédacteur

    Homme Profil pro
    Inscrit en
    Juin 2002
    Messages
    2 165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2002
    Messages : 2 165
    Points : 4 637
    Points
    4 637
    Par défaut
    Citation Envoyé par Mat.M
    Pas forcément c'est un simple problème de transtypage; l'erreur va être soulevée avec un compilo C également.
    Non, en C le cast de void* vers T* est implicite, il n'y a pas d'erreur et le compilateur ne doit donc pas en signaler une.

  15. #15
    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 Mat.M
    Pas forcément c'est un simple problème de transtypage; l'erreur va être soulevée avec un compilo C également.
    Un très vieux alors...

    http://emmanuel-delahaye.developpez....tes.htm#malloc
    Pas de Wi-Fi à la maison : CPL

Discussions similaires

  1. Probleme avec liste chainée
    Par Lucas42 dans le forum C
    Réponses: 3
    Dernier message: 20/11/2007, 19h46
  2. probleme avec liste chainée
    Par Liiscar dans le forum Collection et Stream
    Réponses: 3
    Dernier message: 28/11/2006, 20h37
  3. [MySQL] probleme avec liste déroulante et requete
    Par Ludo75 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 26/01/2006, 13h55
  4. Probleme arbre/liste chainée en template
    Par Raton dans le forum Langage
    Réponses: 1
    Dernier message: 07/11/2005, 16h09
  5. Mal a la tete avec liste chainée d'objet
    Par Raton dans le forum C++
    Réponses: 23
    Dernier message: 03/08/2005, 22h13

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