Ce document a été produit par HEVEA.
Votre browser peut avoir a être configuré pour afficher correctement
certains symboles.
Reportez-vous à la documentation d'HEVEA.
vocable
de structures
contenant un mot suivi de sa fréquence d'apparition. freq
est un entier représentant une
fréquence relative. Les mots sont classés par longueur dans le tableau
vocable
, et pour une longueur de mot donnée, ils sont classés
dans l'ordre lexicographique. Pour accélérer la recherche, un tableau
lstart
indique le début des zones de vocable
correspondant à des mots de longueur donnée, ainsi que le nombre de
mots de cette longueur. Ce tableau comporte MAXLENGTH
entrées.
La figure 1 présente schématiquement cette structure de
données.
En plus des mots de ce dictionnaire, l'utilisateur peut ajouter des mots de son propre vocabulaire dans le dictionnaire. Pour stocker ces nouveaux mots ainsi que leurs fréquences, on utilise pour chaque longueur de mots, une liste des mots définis par l'utilisateur. On suppose que les mots ajoutés ont moins de
MAXLENGTH
caractères.
Le début de cette liste est donnée par le champ new
.accesdico
de chargement et de sauvegarde
du dictionnaire sur un fichier dico.cmp
. Le chargement
s'effectuera en mémoire dans un tableau alloué par le module. Le
fichier sera compressé. La compression est réalisée par
l'élimination des préfixes communs des mots et par leur
remplacement par un caractère unique qui code le nombre de
caractères communs avec le mot précédent. Chaque mot est suivi de
sa fréquence relative.
% cat /tmp/dico computer 123 computerize 122 computerized 121 computers 145 inform 156 informal 13 informality 12 |
% cat /tmp/dico.cmp 0computer 123 8ize 122 Bd 121 8s 145 0inform 156 6al 13 8ity 12 |
trouvermot
qui recherche dans le
dictionnaire les mots correspondant à la séquence de touches
tapées jusqu'à présent. Les mots sont regroupés en une liste que
l'on trie par ordre décroissant de fréquence d'apparition. La
recherche des mots ne tient pas compte des lettres tapées par
l'utilisateur. Les lettres ne sont utilisées que pour l'insertion
d'un mot nouveau. Il ne doit pas y avoir de recopie des mots du
dictionnaire, la liste devant pointer directement sur les mots du
dictionnaire. Cette liste est utilisée en combinaison avec les
touches <
et >
, qui permettent respectivement de
passer au mot suivant le plus fréquent, et au mot suivant le moins
fréquent, et ce de manière circulaire. L'affichage du mot courant
se fait par l'intermédiaire de la variable current_word
et
de la fonction display_word
. L'affichage des touches
frappées se fait par l'intermédiaire de la variable
current_stroke
et de la fonction display_stroke
. Ce
module gérera enfin également la fonction clear
qui permet
de saisir un mot nouveau.
qui insère dans le dictionaire le mot nouveau présent dans la fenêtre ``What you strike'', avec une fréquence d'apparition de valeur 1. Ce mot est contenu dans la variablevoid insert(void) ;
current_stroke
(ce que vous devez gérer). Cette fonction
est appelée lorsque le bouton Insert est appuyé.
clear
. Les fréquences deviennent
alors absolues. Il faut une procédure pour les rendre relatives.
Soit N la somme des fréquences des mots à la précédente
relativisation, n le nombre de mots entrés depuis cette dernière
relativisation. Pour chaque fréquence x d'un mot, la nouvelle
fréquence sera
é ê ê ê |
|
ù ú ú ú |
main
, qui est une boucle inifinie gérant
les événements souris et clavier (entre autres). Vous devez
essentiellement intervenir au niveau de la fonction HandleTouch
qui est appelée lors d'un clic souris sur une touche du clavier. De
même pour les fonctions insert
, clear
et quit
,
appelées lors d'un clic sur le bouton correspondant. Vous trouverez
tout ceci dans ~levaire/TPC/sample/projet9899/
Ce document a été traduit de LATEX par HEVEA.