Exercices Programmation C – Les listes chaînées et les fichiers

Objectif :

Le but de ce TP est d’écrire un programme qui détecte des lignes identiques dans un fichier. De façon plus précise, le programme construit la liste de toutes les lignes différentes qui apparaissent dans le fichier et compte le nombre d’occurrences de chacune de ces lignes.

Pour construire la liste, on introduit les types Cellule et Liste définis de la façon suivante :

// Type des cellules pour les listes chaînées
struct Cellule {
char* str;                    // Pointeur sur la chaîne
int nbr;                      // Nombre d'occurrences
Cellule *next;                // Pointeur sur la cellule suivante
};
typedef Cellule* Liste;

Partie 1 (Allocation)

Écrire une fonction cellAlloc pour l’allocation d’une cellule. Cette fonction prend en paramètre une chaîne de caractères et retourne une cellule. Cette fonction doit pouvoir être utilisée de la manière suivante;

Cellule* c = cellAlloc("Une chaine");

Partie 2 (Construction de la liste)

Écrire une fonction cellCons qui ajoute une cellule à une liste. L’ajout de la nouvelle cellule est fait en tête de liste. Cette fonction prend en paramètre la cellule et la liste.

Partie 3 (Recherche)

Écrire une fonction (search) qui recherche une chaîne de caractères dans une liste. Cette fonction retourne un pointeur sur la première cellule qui contient la chaîne ou la valeur 0 si aucune cellule ne contient la chaîne.

Partie 4

Écrire un programme global qui lit sur l’entrée standard (5 lignes) et qui construit la liste des lignes différentes. Chaque cellule contient une des lignes et son nombre d’occurrences. À la fin, le programme affiche chaque ligne avec son nombre d’occurrences.

Partie  5

Modifier le programme de l’exercice précédent pour qu’il accepte le nom d’un fichier entré par l’utilisateur. La lecture des lignes se fait alors dans le fichier au lieu de l’entrée standard.

3 thoughts on “Exercices Programmation C – Les listes chaînées et les fichiers

  1. March 29, 2013

    ninawahraniya Reply

    SVP j ai besoin de resourdre ce probleme alrothmique je le trouve compliquè voila le probleme si il ya quelqu'un qui peut m'aider et voila le Sujet : ""Pour jouer à AM-STRAM-GRAM, n enfants forment une ronde, choisissent l’un d’eux comme le premier, commencent à compter à partir de lui et décident que le kième enfant doit quitter la ronde, puis le 2kième, et ainsi de suite.
    En simulant la ronde par une liste circulaire, écrire un programme qui donne la liste des enfants dans l’ordre où ils sont sortis de la ronde :
    1/ pour une représentation contiguë,
    2/ pour une représentation chaînée accessible par pointeur,
    3/ pour une représentation chaînée accessible par maillon.""
    et Je vous remercier !!

  2. April 4, 2013

    nani Reply

    igmo

  3. June 13, 2013

    PFonda Reply

    j'ai de votre aide pour le projet suivant:
    —————————————————————————————————————————
    On dispose d’un fichier contenant un texte.
    Lire ce fichier et extraire les mots de 3 à 8 lettres qu’il contient. Le nombre
    maximum de mots à traiter par notre application est100.
    Ces mots sont créés dynamiquement en mémoire centrale (utiliser la fonction
    malloc) puis leurs adresses rangées dans un tableaude pointeurs.
    Le rangement se fait de façon que le tableau reste constamment trié par ordre
    alphabétique croissant durant l’insertion des mots (notez que les chaines elles
    même ne se déplacent pas).
    Les mots obtenus (dans l’ordre alphabétique) sont sauvegardés à la fin de la session
    dans un autre fichier texte.
    On désire appliquer sur ce tableau un ensemble d’opérations qui sont :
    - Insérer un mot dans le tableau (lu au clavier)
    - Supprimer un mot du tableau
    - Fusionner 2 mots du tableau
    - Vérifier si un mot appartient au tableau
    - Lister tous les mots du tableau dont un mot lu au clavier est sous-mot

Leave a Reply

Your email address will not be published. Required fields are marked *


*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>