Vous êtes sur la page 1sur 2

TD7 : STRUCTURES & LISTES CHAINEES EN C

EXERCICE N°1:
Soit les structures EXAMEN et DATE suivantes :
struct EXAMEN {
struct DATE { int numat ;
int j ; char nom[20] ;
int m ; char filiere[20] ;
int a ; int niveau ;
}; struct DATE date_DS ;
};

1. Ecrire la fonction Lire_n ( ) qui permet de lire un entier n compris entre 5 et 15.
2. Ecrire la fonction Lire_Exam( ) de type void qui permet de lire une variable de type
struct EXAMEN.
3. Ecrire la fonction Lire_Tab_Exam( ) qui permet de lire un tableau de n examens.
4. Ecrire la fonction Aff_Date( ) qui affiche une variable de type struct DATE.
5. Ecrire la fonction Aff_Exam( ) qui affiche un examen donné.
6. Ecrire la fonction Exam_A( ) qui prend en paramètre un tableau d’examens et affiche
les examens dont le nom contient au max 5 caractères et commence par la lettre ‘a’.
7. Ecrire la fonction Exam_Info( ) qui prend en paramètre un tableau d’examens,
détermine et retourne le nombre des examens pour la filière « INFO ».
8. Ecrire la fonction main( ) qui teste les fonctions précédentes.

EXERCICE N°2:
L’objectif de cet exercice est la réalisation d’un traducteur Français-Anglais. Le traducteur utilise
un dictionnaire représenté sous forme d’une liste linéaire chainée où chaque maillon contient un
mot en Français et sa traduction en Anglais comme schématisé sur la figure suivante :

Travail demandé :
Le travail demandé consiste à écrire en langage C, un programme modulaire permettant de :
1. Ajouter et Retirer des mots du dictionnaire
2. Traduire un texte, donné sous forme d’une chaine de caractère, du Français vers l’Anglais.

1
ère me
1 Génie Info A&B M TEMIMI.O
Le programme doit rechercher chaque mot du texte dans le dictionnaire puis affiche la traduction
correspondante. Si le mot n’existe pas dans le dictionnaire, sa traduction est remplacée par un "
?". Les mots du texte sont séparés par des blancs, des virgules ou des points.

EXERCICE N°3:

Un pharmacien souhaite traiter les informations concernant son stock de médicaments par
ordinateur. On vous propose de représenter ces informations sous forme de liste linéaire chaînée
ou chaque nœud contient le libellé d'un médicament, la quantité disponible (nombre de boîtes)
et le prix unitaire.Exemple :

On vous demande de :
1. Donner les structures de données nécessaires à la représentation de ce stock.
2. Ecrire la fonction Vendre(Med, NbBoites) permettant de retirer, si possible, 'NbBoites' du
médicament 'Med' du stock.
3. Attention : Il faut supprimer du stock le médicament dont la quantité atteint 0.
4. Ecrire la fonction Acheter(Med, NbBoites, Prix) permettant au pharmacien d'alimenter son
stock par 'NbBoites' du médicament 'Med' ayant le prix unitaire 'Prix' DA. On considère
qu'un médicament prenne toujours le nouveau prix.
5. Ecrire une version itérative et une version récursive de la fonction PStock permettant de
calculer le prix total des médicaments dans le stock.

EXERCICE N°4:

On s’intéresse à des listes doublement chaînées, pour lesquelles chaque cellule à un pointeur suiv
vers la cellule suivante, et un pointeur preced vers la cellule précédente. Voici un exemple ci-
dessous :

Une liste doublement chainée

1. Déclarer le type de données correspondant à une liste doublement chaînée d’entiers.


2. Écrire une fonction d’insertion en tête de liste dans une liste doublement chaînée.
3. Écrire une fonction d’insertion en queue de liste dans une liste doublement chaînée.
4. Écrire une fonction d’insertion dans une liste triée doublement chaînée. La liste doit rester
triée.
5. Écrire une fonction qui supprime la première occurrence (si elle existe) d’un entier n dans
une liste doublement chaînée.
6. Écrire une fonction qui supprime la dernière occurrence (si elle existe) d’un entier n dans
une liste doublement chaînée.
7. Écrire une fonction de recopie d’une liste doublement chaînée à l’identique.

2
ère me
1 Génie Info A&B M TEMIMI.O

Vous aimerez peut-être aussi