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...

  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;
     
    }

  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....

  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....

  8. #8
    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 581
    Points
    41 581
    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...

  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

  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é.

  12. #12
    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 581
    Points
    41 581
    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:

  13. #13
    Expert éminent sénior
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 390
    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 390
    Points : 20 491
    Points
    20 491
    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

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