Bonjour,
Le programme parcourt un fichier texte et affiche les résultats dans le 1er tableau, c'est de classer les mots par alphabétique en 1ère colonne et d' indiquer le nombre de fois des mots dans ce texte en 2ème colonne; pour le 2ème tableau, c'est de classer par l'ordre d'occurrence en 2èm colonne et d'indiquer le mot en 1er colonne.
Dans le derniere foreach, les mots ne sont pas affichés dans le 2ème tableau ( 1ère colonne). Je ne vois pas où sont les fautes. Y a t il un problème sur $mots{$occ}? Un autre problème est la fonction sort, ils ne sont pas classés vraiment par occurrence, car le nombre suivi 1 n'est pas le chiffre 2, c'est plutôt 10, 11, 12.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 $nbmots = 0; # lecture de chaque ligne du fichier d'entrée foreach $ligne(@texte){ $ligne=~s/[,;:!\?\.\-\<\>\=\(\)\'\s\t]+/ /g; # on sépare chaque ligne par un espace et on retourne le résultat dans un tableau @mots @motligne = split(/ /, $ligne); # calcul du nombre des mots dans le tableau @mots $nbmots = $nbmots + @motligne; foreach $mot (@motligne){ $mots{$mot}++; } } foreach $terme (sort keys %mots){ print SORTIE "<TR><TD>$terme</TD><TD>$mots{$terme}</TD>\n"; } print SORTIE "</TABLE></BR>\n"; print SORTIE "<TABLE border=\"1\"><TR><TH>ordre d'occurrence</TH><TH>occurrence</TH></TR>\n"; foreach $occ (sort values %mots){ print SORTIE "<TR><TD>$mots{$occ}</TD><TD>$occ</TD></TR>\n"; } print SORTIE "</TABLE></BODY>\n"; print SORTIE "</HTML>\n";
Pourriez-vous m'aider?
merci
Partager