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 au niveau de l'exécution (pile en c)


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Étudiant
    Inscrit en
    Février 2008
    Messages
    6
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2008
    Messages : 6
    Par défaut Problème au niveau de l'exécution (pile en c)
    Bonsoir/Bonjour svp, j'ai fait selon que j'ai compris ces lignes de code ,mais ça plante, veuillez m'aider ? merci d'avance
    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
    #include<stdio.h>
    #include<StdAfx.h>
    #include<conio.h> 
    #include<stdlib.h> 
    typedef struct element
    {
    	int nombre;
    	element *suivant;
    };
    typedef struct pile
    {
    	element *premier;
    };
     
     
    //typedef maillon* pile;
    void init(pile *p)
    {
    	p->premier=NULL;
    }
    int depiler(pile *mapile)
    {
    	if(mapile==NULL)
    	{
    		printf("Pile vide !");
    		exit(EXIT_FAILURE);
    	}
     
    		int nbr_dep=0;
     
    		element *elm_dep= mapile->premier;
    		nbr_dep=elm_dep->nombre;
    		mapile->premier=elm_dep->suivant;
    		free(elm_dep);
    		return nbr_dep;
     
    }
    void empiler(pile *mapile,int entre)
    {
    	//element *nve ; //exemple TEXTE[I] = malloc(strlen(INTRO)+1);
    		element *nve =(element*)malloc(sizeof(entre));
     
    	nve->nombre=entre;
    	nve->suivant=mapile->premier;
    	mapile->premier=nve;
     
    }
    void afficher(pile *mapile)
    {
    	if(mapile==NULL)
    	{
    		exit(EXIT_FAILURE);
    	}
    	element *courant = mapile->premier;
    	while(courant!=NULL)
    	{
    		printf("sommet :  \%d\n",courant);
    		courant=courant->suivant;
    	}
    	printf("\n");
    }
     
    void main()
    {
    	pile *mapile = NULL;
    	empiler(mapile, 4);
    empiler(mapile, 8);
    empiler(mapile, 15);
    empiler(mapile, 16);
    empiler(mapile, 23);
    empiler(mapile, 42);
    printf("\nEtat de la pile :\n");
    afficher(mapile);
    printf("Je depile %d\n", depiler(mapile));
    printf("\nEtat de la pile :\n");
    afficher(mapile);
     
    }

  2. #2
    Expert confirmé
    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
    Par défaut
    ** Quelques malformations du code pour commencer :
    - Les typedef :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    typedef struct element
    {
    	int nombre;
    	struct element *suivant; 
    }element;
    typedef struct pile
    {
    	element *premier;
    }pile;
    - L'affichage : le code affichait les adresses, pas le contenu.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    printf("sommet :  %d\n",courant->nombre);
    - main() renvoie toujours un int.

    ** L'erreur : il n'y a pas d'objet pile ! seul un pointeur sur un objet pile (inexistant) avait été créé.
    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
    int main(void)
    {
      pile mapile ;
      init(&mapile);
      empiler(&mapile, 4);
      empiler(&mapile, 8);
      empiler(&mapile, 15);
      empiler(&mapile, 16);
      empiler(&mapile, 23);
      empiler(&mapile, 42);
      printf("\nEtat de la pile :\n");
      afficher(&mapile);
      printf("Je depile %d\n", depiler(&mapile));
      printf("\nEtat de la pile :\n");
      afficher(&mapile);
      return 0 ;
    }

Discussions similaires

  1. Réponses: 3
    Dernier message: 21/07/2008, 11h55
  2. [CSS] Problème au niveau de la résolution
    Par shukin dans le forum Mise en page CSS
    Réponses: 3
    Dernier message: 28/10/2005, 13h29
  3. [PPC][C#][SQL2000] Problème au niveau de donné controlé
    Par Roach dans le forum Windows Forms
    Réponses: 16
    Dernier message: 21/09/2005, 22h08
  4. problème au niveau de restore database
    Par Redouane dans le forum Administration
    Réponses: 2
    Dernier message: 07/09/2005, 11h49
  5. [DNS MX]Avec DynDNS.org, problème au niveau du MX
    Par Swoög dans le forum Développement
    Réponses: 9
    Dernier message: 24/08/2004, 22h00

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