Bonjour à tous,
2ème Partie : analyse de texte (4 points)
On cherche à écrire un programme qui permette d’extraire les mots d’un texte et de calculer leur
fréquence. On considérera que les seuls séparateurs autorisés sont le blanc, la virgule et le point, et que
plusieurs séparateurs peuvent se succéder. Bien entendu, un mot ne contient pas de séparateurs.
Par exemple, si le texte est "aujourd’hui, c’est le jour de l’examen de NF01 …", le programme
affichera :
aujourd'hui 1
c’est 1
le 1
jour 1
de 2
l’examen 1
NF01 1
Les déclarations du programme principal sont les suivantes :
const NMAX=1000;
type RecMot = record
mot : string ;
freq : integer ;
end;
TabMots = array[1..NMAX] of RecMot ;
var
tab: TabMots;
pos,i: integer;
unMot,texte:string;
nbMots:integer;
Chaque élément du tableau tab est un enregistrement constitué d’un mot du texte et de sa fréquence
(nombre d’occurrences dans le texte). Le nombre d’éléments de tab est géré par la variable nbMots.
1) Ecrire la procédure motSuivant(texte,unMot,pos) qui isole dans unMot le mot suivant de la
chaine de caractères texte à partir de la position pos. Après exécution de cette procédure, la valeur
de pos est la position du dernier caractère de unMot dans texte augmentée de 1, ou au plus, la
longueur de texte augmentée de 1.
J'ai écris :
procedure motsuivant(texte,unMot,pos);
begin
while chaine[pos] not in [',',' ','.'] do
pos:=pos+1;
repeat
pos:=pos+1
unMot:= et la je dois construire le mot avec tout les caractere jusqu'au prochaine espace pour l'isolé, mais je ne sais pas comment faire
until chaine[pos+1] in [',',' ','.']
Quelqu'un sait-il comment procéder ?
-----