:: Enseignements :: Licence :: L2 :: 2008-2009 :: Structures de données ::
[LOGO]

InTern (Index ternaire)


But du projet

Vous devrez implémenter en C un programme capable d'indexer les mots d'un texte en notant toutes leurs positions.

Calcul des mots

Les mots seront lus depuis un fichier texte passé en argument de votre programme. On considérera que les mots sont ce que scanf("%64s",resultat); calcule, c'est-à-dire une séquence d'au plus 64 caractères qui ne sont pas des séparateurs.

Stockage de l'index

Les mots seront stockés dans un arbre ternaire de recherche. Pour chaque fin de mot, représentée par un noeud étiqueté par '\0', on stockera la liste des positions auxquelles il apparaît grâce à une liste chaînée d'entiers. Les types à utiliser seront donc les suivants:

struct liste {
		int valeur;
		struct liste* suivant;
};
		
struct ATR {
		struct ATR* gauche;
		struct ATR* droit;
		char c;
		struct ATR* milieu;
		struct liste* positions;
};	
	

Sortie du programme

Une fois le texte indexé, votre programme devra explorer l'arbre ternaire et afficher sur sa sortie standard la liste des mots dans l'ordre alphabétique, en indiquant sur une ligne pour chaque mot ses occurrences de la façon suivante:
mot1 pos1 pos2 pos3 ...		
	
Par exemple, pour ce fichier texte, le rendu devrait être celui-ci:
Le 0
chat 3 45
du 8 42
est 17 50
gros. 54
le 33
mais 28
petit 11 36
petit, 21
	

Conditions de rendu

Vous travaillerez en binômes. Vous lirez avec attention la charte des projets. Vous rendrez ensuite une archive nommée login1-login2.zip contenant les choses suivantes:
  • un répertoire src contenant les sources du projet ainsi qu'un Makefile. Lorsqu'on lance make, on doit obtenir un exécutable nommé InTern. Les sources doivent être propres et commentées.
  • un fichier doc.pdf contenant votre rapport qui devra décrire votre travail. Si votre projet ne fonctionne pas complètement, vous devrez en décrire les bugs.

Le projet est à rendre par mail à votre enseignant de TP (i.e. Stéphane Vialette, Sébastien Paumier ou Elena Florian), au plus tard le lundi 25 mai 2009 à 15h.