Les piles en C [Fermé]

Signaler
-
 matinot -
Bonjour,

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

Merci

2 réponses

Messages postés
5394
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
31 juillet 2020
891
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
Messages postés
5394
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
31 juillet 2020
891
quel genre de problème ?
Messages postés
8
Date d'inscription
vendredi 17 juin 2016
Statut
Membre
Dernière intervention
26 mai 2018
>
Messages postés
5394
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
31 juillet 2020

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.
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
Messages postés
4758
Date d'inscription
dimanche 12 juin 2011
Statut
Contributeur
Dernière intervention
2 juillet 2020
1 049 >
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 ?
>
Messages postés
4758
Date d'inscription
dimanche 12 juin 2011
Statut
Contributeur
Dernière intervention
2 juillet 2020

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
5394
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
31 juillet 2020
891
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.