Les piles en C

Fermé
matinot - 21 mai 2018 à 03:48
 matinot - 28 mai 2018 à 17:44
Bonjour,

Je vais savoir implementer la bibliothèque d'entète d'une pile en C.

Merci

2 réponses

[Dal] Messages postés 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024 1 083
22 mai 2018 à 18:04
Bonjour matinot,

Une pile très simple, pourrait implémenter les opérations de base suivantes :

- push() : pour mettre un nouvel élément en haut de la pile
- pop() : pour retirer l'élément en haut de la pile
- is_empty(): pour tester si la pile est vide

Dal
0
matinot Messages postés 8 Date d'inscription vendredi 17 juin 2016 Statut Membre Dernière intervention 26 mai 2018
25 mai 2018 à 17:17
Bonjour Dal,

Un grand merci, mais maintenant j'ai un problème avec la création du fichier d’entête de la bibliothèque du pile.
0
[Dal] Messages postés 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024 1 083
25 mai 2018 à 21:07
quel genre de problème ?
0
matinot Messages postés 8 Date d'inscription vendredi 17 juin 2016 Statut Membre Dernière intervention 26 mai 2018 > [Dal] Messages postés 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024
26 mai 2018 à 17:26
Pour que la fonction main puisse s’exécuter dès qu'on ajoute la fonction push() pour ajouter un élément et la fonction pop() pour retire l'élément.
0
matinot Messages postés 8 Date d'inscription vendredi 17 juin 2016 Statut Membre Dernière intervention 26 mai 2018
26 mai 2018 à 17:27
Cela veux dire la bibliothèque pile.h et pile.c
0
ElementW Messages postés 4816 Date d'inscription dimanche 12 juin 2011 Statut Contributeur Dernière intervention 5 octobre 2021 1 225 > matinot Messages postés 8 Date d'inscription vendredi 17 juin 2016 Statut Membre Dernière intervention 26 mai 2018
27 mai 2018 à 12:23
Tu ne réponds toujours pas à la question de [Dal]. Il t'a demandé quel genre de problème il s'agit, pas où il arrive. Qu'est-ce que concrètement, précisément tu n'arrives pas à faire ?
0
[Dal] Messages postés 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024 1 083
Modifié le 28 mai 2018 à 14:36
Bonjour matinot,

Si tu as écrit tes fonctions, et qu'elles sont implémentées ce n'est pas si difficile de les organiser sous forme de module.

En gros :

- tu mets les #define, les déclarations de types et les prototypes des fonctions qui constituent l'interface du module dans le pile.h (avec des gardes empêchant les inclusions multiples) et l'implémentation de ces fonctions dans pile.c (ainsi que les éventuelles fonctions statiques accessibles seulement au module).

- pile.c devrait inclure pile.h

- le main, inclut pile.h et se sert des déclarations de types et fonctions rendues accessibles.

Voilà un exemple, qui illustre ces différents principes, d'un programme fictif stockant des éléments et leur masse atomique dans une simple struct :

main.c
#include <stdio.h>

#include "module.h"

int main(void) {
    struct element Cuivre;

    module_initialize_element(&Cuivre, 19, 63.546);
    module_print_element(Cuivre);

    return 0;
}

module.h
#ifndef MODULE_H
#define MODULE_H

#define MODULE_MAX_NUMBER 118

struct element {
    int number;
    double mass;
};

/* module interface */ 
    
int module_initialize_element(struct element * e,
        int number, double mass);
int module_print_element(struct element e);

#endif

module.c
/* module.c */

#include "module.h"

#include <stdio.h>
#include <stdlib.h>

    
/* private static functions */

static void error(char * st) {
    printf("Error: %s\n", st);
    exit(1);
}

/* module interface functions implementation */

int module_initialize_element(struct element * e,
        int number, double mass) {
    if (number > MODULE_MAX_NUMBER)
        error("Element number is too big");
    e->number = number;
    e->mass = mass;

    return 0;
}

int module_print_element(struct element e) {
    printf("Element number %d has atomic mass of %f\n",
            e.number, e.mass);

    return 0;
}

La conception d'un module est un vaste sujet, mais tu peux voir http://umich.edu/~eecs381/handouts/CHeaderFileGuidelines.pdf pour des explications plus complètes sur ce qui devrait figurer dans un .h et ce qui ne le devrait pas.

Dal
0
Bonjour Dal!

Merci beaucoup pour l'explication.
0