2 Un fichier index´e
Nous souhaitons ´ecrire un programme qui lit en entr´ee un fichier saisi au clavier par
l’utilisateur, puis d´ecide s’il a la structure suivante :
A2 12.45
B1 2.0
A1 13.47
C4 1.45
B27 23.78
C2 4.0
B3 6.8
...
Les lignes du fichier d´efinissent les entr´ees des tableaux A,Bet C(dans cet exemple). Chaque
ligne a la structure suivante :
– une lettre en premi`ere colonne,
– imm´ediatement suivie d’un nombre (entier naturel),
– puis une s´equence non vide d’espaces (’ ’ et ’\t’),
– un nombre flottant,
– et enfin, le caract`ere ”fin de ligne” ’\n’.
Des espaces suppl´ementaires peuvent se trouver en d´ebut ou en fin de ligne (i.e. imm´ediatement
avant ’\n’. Ils doivent ˆetre ignor´es. Enfin, la fin du fichier est marqu´ee par la lecture du ca-
ract`ere ”Fin de fichier” repr´esent´e par la constante symbolique EOF (d´efinit dans stdlib.h
pour le langage C).
Exercice 4: Formalisation
Donnez un l’automate fini minimal qui accepte le langage des fichiers (vus comme des
mots) qui ont la structure ci-dessus.
Exercice 5: Mise en œuvre
Mettez en œuvre l’automate fini minimal obtenu `a l’exercice pr´ec´edent par un programme
C qui lit le fichier sur son entr´ee standard et qui indique s’il a la bonne structure ou non.
Exercice 6: M´emorisation des donn´ees
Enrichissez votre programme pour qu’il m´emorise les valeurs des tableaux Aet Bunique-
ment. Sur l’exemple ci-dessus, le tableau Acontient 12.45 en case d’indice 2 et 13.47 en case
d’indice 1. Les cases du tableau pour lesquelles aucune valeur n’a ´et´e fournie doivent contenir
0.0. Avant de stocker un ´el´ement dans un tableau, vous v´erifierez que l’indice donn´e dans
le fichier ne provoque pas de d´ebordement de capacit´e du tableau. Une fois l’int´egralit´e du
fichier lue, votre programme affichera les contenus des tableaux Aet B.
2