Menu

Les piles en C [Fermé]

- - Dernière réponse :  matinot - 28 mai 2018 à 17:44
Bonjour,

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

Merci
Afficher la suite 

2 réponses

Messages postés
5169
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
18 juillet 2019
785
0
Merci
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
[Dal]
Messages postés
5169
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
18 juillet 2019
785 -
quel genre de problème ?
matinot
Messages postés
8
Date d'inscription
vendredi 17 juin 2016
Statut
Membre
Dernière intervention
26 mai 2018
> [Dal]
Messages postés
5169
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
18 juillet 2019
-
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.
matinot
Messages postés
8
Date d'inscription
vendredi 17 juin 2016
Statut
Membre
Dernière intervention
26 mai 2018
-
Cela veux dire la bibliothèque pile.h et pile.c
ElementW
Messages postés
4869
Date d'inscription
dimanche 12 juin 2011
Statut
Contributeur
Dernière intervention
20 juillet 2019
836 > matinot
Messages postés
8
Date d'inscription
vendredi 17 juin 2016
Statut
Membre
Dernière intervention
26 mai 2018
-
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 ?
> ElementW
Messages postés
4869
Date d'inscription
dimanche 12 juin 2011
Statut
Contributeur
Dernière intervention
20 juillet 2019
-
J'ai écrit les deux fonctions maintenant je vais faire l'appel à ces deux fonctions dans le main pour que le programme compile.
Messages postés
5169
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
18 juillet 2019
785
0
Merci
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
Bonjour Dal!

Merci beaucoup pour l'explication.