:: Enseignements :: ESIPE :: EISC1 :: OC1 - 2011-2012 :: Programmation C ::
[LOGO]

Structures, listes chaînées et entrées-sorties


Dans ce TD, nous aborderons les notions de structures, listes chaînées et entrées-sorties. Plus précisément, nous allons travailler sur des listes chaînées de nombres complexes.

Exercice 1 - Nombres complexes

Exercice 2 - Listes chaînées de nombres complexes

Le but de cette exercice est d'implémenter un certain nombre d'opérations sur des listes de nombres complexes, en utilisant le module défini dans la question précédente. Nous supposons que nous avons un tableau memory contenant des cellules de listes. Il s'agit d'abord de définir une structure cell qui contient deux champs : une valeur complexe (value) et l'indice dans memory de la cellule suivante (next). Une liste est définie par un indice d'une cellule du tableau memory qui sera la première cellule de la liste. Le champ next pourra avoir deux valeurs particulières, en plus de positions dans le tableau memory:
  • END (-1) indiquant que la cellule courante n'a pas de cellule suivante.
  • EMPTY (-2) indiquant que la cellule n'appartient à aucune chaîne (pas de valeur et pas de cellule suivante).
Le tableau memory sera déclaré en global. A chaque fois que l'on voudra ajouter une nouvelle cellule dans une liste, celle-ci correspondra à la première cellule disponible dans le tableau memory (cellule avec champ next égal à EMPTY). On donnera à ses deux champs les valeurs que l'on souhaite.

Exercice 3 - Listes chaînées et entrées-sorties

Exercice 4 - Liste chaînée triée de nombres complexes

On souhaite maintenant travailler sur une liste chaînée triée de nombres complexes. On trie les nombres complexes selon leur norme.
  • Ecrire une fonction add_sorted qui ajoute un nombre complexe dans une liste triée. Tester.
  • Ecrire une fonction belong qui indique si un nombre complexe appartient à la liste.
  • Ecrire une fonction extract qui extrait d'une liste de nombres complexes la liste des nombres dont la norme est compris dans un intervalle passé en paramètre.
  • Ecrire une fonction remove_sorted qui supprime tous les nombres complexes d'une liste qui ont une certaine norme.
  • Ecrire une fonction qui supprime d'une liste tous les nombres complexes dont la norme est supérieure à 10.