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 :

probléme sur les piles


Sujet :

C

  1. #1
    Nouveau membre du Club
    Inscrit en
    Avril 2007
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 65
    Points : 32
    Points
    32
    Par défaut probléme sur les piles
    salut

    j'ai un probléme sur les piles :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    void Push(pile **p, int Val)
    {
            pile *element = malloc(sizeof(pile));
            if(!element) exit(1);     
            element->valeur = Val;
            element->prec = *p;
            *p = element;       
    }
    error : missing ')' before '*'

    c'est erreur kelle me donne

  2. #2
    Membre expérimenté
    Avatar de muad'dib
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2003
    Messages
    1 011
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

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

    Informations forums :
    Inscription : Janvier 2003
    Messages : 1 011
    Points : 1 375
    Points
    1 375
    Par défaut
    Peut-on voir la définition du type pile ainsi que le numéro de ligne de l'erreur ?

  3. #3
    Membre actif
    Avatar de odsen.s
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2006
    Messages
    269
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2006
    Messages : 269
    Points : 243
    Points
    243
    Par défaut
    Salut,

    J'ai plus d'erreurs que ça :
    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
    Project   : test_2
    Compiler  : GNU GCC Compiler (called directly)
    Directory : G:\Documents\benoit\prog\test_2\
    --------------------------------------------------------------------------------
    Switching to target: default
    Compiling: main.c
    main.c:4: error: syntax error before '*' token
    main.c:4: warning: function declaration isn't a prototype
    main.c:6: error: syntax error before '*' token
    main.c:7: warning: function declaration isn't a prototype
    main.c: In function `Push':
    main.c:8: error: `pile' undeclared (first use in this function)
    main.c:8: error: (Each undeclared identifier is reported only once
    main.c:8: error: for each function it appears in.)
    main.c:8: error: `element' undeclared (first use in this function)
    main.c:10: error: `Val' undeclared (first use in this function)
    main.c:11: error: `p' undeclared (first use in this function)
    Process terminated with status 1 (0 minutes, 1 seconds)
    8 errors, 2 warnings
    Commence donc par donner un code complet.

  4. #4
    Expert éminent sénior
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Points : 13 926
    Points
    13 926
    Par défaut
    Est-ce que le type pile est connu de la fonction ?
    Publication : Concepts en C

    Mon avatar : Glenn Gould

    --------------------------------------------------------------------------
    Une réponse vous a été utile ? Remerciez son auteur en cliquant le pouce vert !

  5. #5
    Nouveau membre du Club
    Inscrit en
    Avril 2007
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 65
    Points : 32
    Points
    32
    Par défaut
    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
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
     
    #include<stdio.h>
    #include<stdlib.h>
     
    void Push(pile **p, int Val)
    {
            pile *element = malloc(sizeof(pile));
            if(!element) exit(1);     
            element->valeur = Val;
            element->prec = *p;
            *p = element;       
    }
     
     
    int Pop(pile *p)
    {
            int Val;
            pile *tmp;
            if(!*p) return -1;     
            tmp = (*p)->prec;
            Val = (*p)->valeur;
            free(*p);
            *p = tmp;       
            return Val;     
    }
     
     
     
    void Clear(pile *p)
    {
            pile *tmp;
            while(*p)
              {
                 tmp = (*p)->prec;
                 free(*p);
                 *p = tmp;
              }
    }
     
     
    int Length(pile *p)
    {
            int n=0;
            while(p)
              {
                  n++;
                  p = p->prec;
              }
            return n;
    }
     
     
     
    void View(pile *p)
    {
            while(p)
              {
                 printf("%d\n",p->valeur);
                 p = p->prec;
              }
    }
     
    void main()
    {
            pile *MaPile = NULL;   /* Impératif de l'initialiser à NULL */
     
            Push(&MaPile, 10);
            Push(&MaPile, 25);
            Push(&MaPile, 33);
            Push(&MaPile, 12);      /* Empile 4 valeurs. */
     
            puts("Affichage de la pile :");
            View(MaPile);       /* Affiche la totalité de la pile. */
            puts("------");
     
            printf("Nb d'elements : %d\n",Length(MaPile));
            puts("------");
     
            puts("Deux valeurs soutirees de la pile :");
            printf("%d\n",Pop(&MaPile));   // Affiche deux valeurs 
            printf("%d\n",Pop(&MaPile));   // soutirées de la pile. 
            puts("------");
     
            puts("Affichage de la pile :");
            View(MaPile);       // Affiche la totalité de la pile. 
            puts("------");
     
            Clear(&MaPile);        // Vide la pile. 
     
            Push(&MaPile, 18);      // Empile une valeur. 
     
            puts("Affichage de la pile apres vidage et ajout d'une valeur :");
            View(MaPile);       // Affiche la totalité de la pile. 
            puts("------\n");
     
            Clear(&MaPile);    // Vider la pile avant de quitter. 
     
     
    }
    voila le code complé

    merci de votre aide

  6. #6
    Membre actif
    Avatar de odsen.s
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2006
    Messages
    269
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2006
    Messages : 269
    Points : 243
    Points
    243
    Par défaut
    Le type pile n'est défini nulle part.
    Le problème vient de là.

  7. #7
    Nouveau membre du Club
    Inscrit en
    Avril 2007
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 65
    Points : 32
    Points
    32
    Par défaut
    j'ai ajouté
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    typedef struct pile
            {
                    int valeur;
                    struct pile *prec;
            } pile ;
     
     pile *MaPile = NULL;
    mais toujours il me donne ses erreur

    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
    habbaz\Bureau\liste chainé\listesimple\pile.c(24) : error C2088: '!' : illegal for struct
    C:\Documents and Settings\khabbaz\Bureau\liste chainé\listesimple\pile.c(25) : error C2232: '->prec' : left operand has 'struct' type, use '.'
    C:\Documents and Settings\khabbaz\Bureau\liste chainé\listesimple\pile.c(26) : error C2232: '->valeur' : left operand has 'struct' type, use '.'
    C:\Documents and Settings\khabbaz\Bureau\liste chainé\listesimple\pile.c(27) : error C2172: 'free' : actual parameter is not a pointer : parameter 1
    C:\Documents and Settings\khabbaz\Bureau\liste chainé\listesimple\pile.c(28) : error C2115: '=' : incompatible types
    C:\Documents and Settings\khabbaz\Bureau\liste chainé\listesimple\pile.c(37) : error C2083: struct comparison illegal
    C:\Documents and Settings\khabbaz\Bureau\liste chainé\listesimple\pile.c(39) : error C2232: '->prec' : left operand has 'struct' type, use '.'
    C:\Documents and Settings\khabbaz\Bureau\liste chainé\listesimple\pile.c(40) : error C2172: 'free' : actual parameter is not a pointer : parameter 1
    C:\Documents and Settings\khabbaz\Bureau\liste chainé\listesimple\pile.c(41) : error C2115: '=' : incompatible types
    C:\Documents and Settings\khabbaz\Bureau\liste chainé\listesimple\pile.c(85) : warning C4047: 'function' : 'struct pile *' differs in levels of indirection from 'struct pile ** '
    C:\Documents and Settings\khabbaz\Bureau\liste chainé\listesimple\pile.c(85) : warning C4024: 'Pop' : different types for formal and actual parameter 1
    C:\Documents and Settings\khabbaz\Bureau\liste chainé\listesimple\pile.c(86) : warning C4047: 'function' : 'struct pile *' differs in levels of indirection from 'struct pile ** '
    C:\Documents and Settings\khabbaz\Bureau\liste chainé\listesimple\pile.c(86) : warning C4024: 'Pop' : different types for formal and actual parameter 1
    C:\Documents and Settings\khabbaz\Bureau\liste chainé\listesimple\pile.c(93) : warning C4047: 'function' : 'struct pile *' differs in levels of indirection from 'struct pile ** '
    C:\Documents and Settings\khabbaz\Bureau\liste chainé\listesimple\pile.c(93) : warning C4024: 'Clear' : different types for formal and actual parameter 1
    C:\Documents and Settings\khabbaz\Bureau\liste chainé\listesimple\pile.c(101) : warning C4047: 'function' : 'struct pile *' differs in levels of indirection from 'struct pile ** '
    C:\Documents and Settings\khabbaz\Bureau\liste chainé\listesimple\pile.c(101) : warning C4024: 'Clear' : different types for formal and actual parameter 1
    Error executing cl.exe.

  8. #8
    Nouveau membre du Club
    Inscrit en
    Avril 2007
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 65
    Points : 32
    Points
    32
    Par défaut
    salut

    il a une solution ou nn
    de mon problème;

  9. #9
    Expert éminent sénior
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Points : 13 926
    Points
    13 926
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    int Pop(pile **p)
    {....
    
    void Clear(pile **p)
    {....
    Publication : Concepts en C

    Mon avatar : Glenn Gould

    --------------------------------------------------------------------------
    Une réponse vous a été utile ? Remerciez son auteur en cliquant le pouce vert !

  10. #10
    Nouveau membre du Club
    Inscrit en
    Avril 2007
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 65
    Points : 32
    Points
    32
    Par défaut
    merci bien

    oui j'ai trouvé la faute;

  11. #11
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 603
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 603
    Points : 17 913
    Points
    17 913
    Billets dans le blog
    2
    Par défaut
    n'oublie pas résolu si ça l'est..
    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

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

Discussions similaires

  1. Problème sur les dates
    Par Littlecoda dans le forum Oracle
    Réponses: 7
    Dernier message: 07/07/2006, 11h39
  2. problème sur les threads et les sémaphores
    Par ramislebob dans le forum Windows
    Réponses: 1
    Dernier message: 29/06/2006, 11h52
  3. Réponses: 6
    Dernier message: 31/03/2006, 17h05
  4. j'ai un problème sur les hinstances
    Par ramaro dans le forum C++
    Réponses: 9
    Dernier message: 26/02/2006, 14h32
  5. Réponses: 4
    Dernier message: 28/07/2005, 16h22

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