Si plusieurs disques de la même catégorie se suivent, on peut omettre
de répéter la catégorie. La ligne comporte alors une tabulation avant
tout premier mot puis l'auteur et le titre du disque.
Exemple ('\t' représentant une tabulation) :
chanson française \t Jacques Brel \t L'homme de la Mancha \t Georges Brassens \t Les copains d'abord
De la même façon, si plusieurs disques de la même catégorie et du même
auteur se suivent, on peut omettre de répéter la catégorie et l'auteur.
La ligne comporte alors une tabulation avant tout premier mot puis le
titre du disque.
Exemple :
chanson française \t Georges Brassens \t Les copains d'abord \t chanson pour l'auvergnatEn outre, le nombre de catégories ainsi que le nombre maximum de disques par catégorie sont fournis en argument de la ligne de commande. L'appel de l'exécutable sera donc de la forme :
$ nom_exécutable nb_catégories max_disques_par_catégorie
rock\tGun Club\tfire of love rock \t \t The jon spencer blues explosion \t acme \t \t the Jon Spencer blues explosion \t\t\t orange electro \t \t tHe chemical brothers \t surrender jazz \t Miles Davis \t Tutu \t kind of blue jazz\tjohn Coltrane\t\tA love supreme rock \tMiles Davis \t \t A Tribute To Jack Johnson \t the Jon Spencer blues explosion \t ACME plus
En supposant que l'entrée type précédente soit contenue dans le fichier discothèque, l'appel du programme :
$ a.out 3 10 < discothèquedonnera sur la sortie standard (à l'ordre des catégories et des titres près) :
ROCK 5 Gun Club Fire Of Love The Jon Spencer Blues Explosion Acme The Jon Spencer Blues Explosion Orange The Jon Spencer Blues Explosion ACME Plus Miles Davis A Tribute To Jack Johnson ELECTRO 1 THe Chemical Brothers Surrender JAZZ 3 Miles Davis Tutu Miles Davis Kind Of Blue John Coltrane A Love Supreme Nombre de disques : 9
Vous pourrez tenir pour acquis que la longueur maximale d'une ligne décrivant un disque est de 250 caractères et que la longueur maximale de chacun des éléments d'une ligne (catégorie, auteur et titre du disque) est de 70 caractères.
De plus, les données fournies au programme sont supposées correctes. Ainsi le fichier d'entrée respecte scrupuleusement le format spécifié plus haut. De même, les valeurs passées en ligne de commande sont cohérentes avec l'entrée correspondante. Par conséquent, vous vous épargnerez le traitement des erreurs dûes à l'utilisateur.
Vous pourrez par exemple, mais vous êtes libres de procéder autrement, représenter un disque par un type Disque regroupant l'auteur et le titre du disque. Une catégorie pourra être représentée par un type Categorie regroupant le nom de la catégorie, le nombre de disques dans la catégorie ainsi que la liste de disques appartenant à la catégorie. Une liste de disques dans une catégorie pourra être stockée dans un tableau de Disque. Enfin, la liste de disques globale pourra alors être manipulée à travers un tableau de Categorie.
Le travail doit être fait en binôme. Vous devez envoyer par courrier électronique (en documents attachés) vos fichiers sources (pas d'exécutable) à ponsini AT i3s.unice.fr avant le 19 novembre 2002. Une attention particulière sera accordée à la façon dont votre code est commenté et à son découpage pertinent en plusieurs fonctions.
Vous joindrez un fichier ALIRE contenant des indications sur l'état d'avancement de votre projet et sur la façon de le compiler. Dans tous les cas, votre programme doit pouvoir être compilé sous UNIX avec gcc et les options -Wall -ansi -pedantic.