IUP 1 - TD 7

Exercice 2

Il s'agit d'écrire un programme capable de lire une série de nom, prénom, âge dans un tableau, et de les imprimer dans l'ordre de l'annuaire. Il est impératif de respecter les formats d'entrée et de sortie suivants.

En entrée: les nom, prénom et âge sont sur une ligne séparée; aucun caractère ne marque la fin du fichier; il n'y a aucune ligne vide nulle part dans le fichier. En sortie: les nom, prénom et âge sont sur une seule ligne, séparés par un seul espace, l'âge est sur trois positions Le programme peut imprimer n'importe quel autre message (par exemple: "Entrez le nom"), à condition que la ligne commence par le caractère `>'.

Exemple:
Entrée: Sortie:
Waller
Emmanuel
122
Loescher
Bernd
28
Tronche
Christophe
3
Bernd Loescher  28
Tronche Christophe   3
Waller Emmanuel 122

Exercice 3

Une liste chaînée de caractères peut être stockée dans un tableau Pascal dont la déclaration est la suivante:
type	   
   cellule = record
		contenu	: char;
		suivant	: integer
	     end;	

   liste   = record
		tete  : integer;
		libre : integer;
		tas   : array[1..taille_max] of cellule
	     end;
Les cellules libres sont chaînées entre elles. Le champs tete pointe la première cellule de la liste, le champ libre la première cellule libre.

En utilisant cette déclaration, vous devez implémenter les procédures suivantes:
initialise(var l : liste) Initialise la liste
cons(var l : liste; c : char) Insère c au début de la liste (c'est à dire avant toutes les autres cellules).
inserer(var l : liste; c : char); Insère c dans la liste à la position alphabétique.
afficher(l : liste) Affiche la liste, en préfixant chaque cellule par sa position (indice dans le tas).
supprimer(var l : liste; c : char) Supprime la première occurence de c dans la liste.
Votre programme doit lire les lignes de l'entrée standard une par une. Chaque ligne consiste en le signe '+' ou '-', et un caractère. `+' correspond à l'insertion d'un caractère, `-' à sa suppression. Le programme doit maintenir deux listes, une dans laquelle les caractères sont insérés en tête, l'autre dans laquelle les caractères sont insérés à leur place.

Exemple:
Entrée: Sortie:
+w
+a
+l
+l
+e
+r
-e

 1 w 
 1 w 

 2 a  1 w 
 2 a  1 w 

 3 l  2 a  1 w 
 2 a  3 l  1 w 

 4 l  3 l  2 a  1 w 
 2 a  4 l  3 l  1 w 

 5 e  4 l  3 l  2 a  1 w 
 2 a  5 e  4 l  3 l  1 w 

 6 r  5 e  4 l  3 l  2 a  1 w 
 2 a  5 e  4 l  3 l  6 r  1 w 

 6 r  4 l  3 l  2 a  1 w 
 2 a  4 l  3 l  6 r  1 w 


Christophe Tronche, ch@tronche.com