Sciences de l'informatique

Bienvenue dans notre forum de partage et d'échange d'information technique dans le domaine NTIC (Informatique, Programmation, Réseau, Multimédia), ce forum est destinée à tous les élèves Tunisiens
 
AccueilCalendrierFAQMembresGroupesS'enregistrerConnexion
Sujets similaires
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Derniers sujets
Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Avril 2017
LunMarMerJeuVenSamDim
     12
3456789
10111213141516
17181920212223
24252627282930
CalendrierCalendrier
Qui est en ligne ?
Il y a en tout 1 utilisateur en ligne :: 0 Enregistré, 0 Invisible et 1 Invité

Aucun

Le record du nombre d'utilisateurs en ligne est de 6 le Ven 13 Jan - 2:22

Partagez | 
 

 Exercice 2 (Enregistrement et fichiers)

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
Dhifallah Fethi
Admin
avatar

Messages : 74
Date d'inscription : 02/03/2011

MessageSujet: Exercice 2 (Enregistrement et fichiers)   Dim 27 Mar - 1:31

Exercice 2 (Enregistrement et fichiers)

"Exemple.TXT" est un fichier texte enregistré dans d:\statistique. Ecrire un programme pascal permettant de calculer et afficher la fréquence de chaque mot dans le texte sans redondance. L’affichage se fait par ordre alphabétique. Par besoin de simplicité, on suppose que le texte ne contient pas des signes de ponctuation.
Exemple :
Si le texte : « On peut déranger certains gens tous le temps et tous les gens de temps en temps mais pas tous les gens tous le temps » produit le résultat suivant :

[Vous devez être inscrit et connecté pour voir cette image]


Correction de l'exercice

Code:
program frequence;

uses WinCrt;

type
        e_freq = record
                mot : string[20];
                freq : integer;
        end;
        tab_freq = array [1..50] of e_freq;

function Miniscule(var ch : string):string;
var
  i : integer;
begin
    for i:=1 to Length(ch) do
        if (ch[i] in ['A'..'Z']) then
            ch[i] := Chr(Ord(ch[i]) + 32);
    Miniscule := ch;
end;

function Position_Mot(mot : string ; var n : integer ; var t : tab_freq):integer;
var
  p, i : integer;
begin
    p := 0;
    i := 1;

    while (i <= n) and (p = 0) do
    begin
          if (mot = t[i].mot) then p := i else i:=i+1;
    end;

    Position_Mot := p;
end;

procedure Inserer_Mot(mot : string ; var n : integer ; var t : tab_freq);
var
  ne : e_freq;
  p  : integer;
begin
    ne.mot := mot;
    ne.freq := 1;
    p := n;
    while (p > 0) and (ne.mot < t[p].mot) do
    begin
          t[p+1] := t[p];
          p := p - 1;
    end;
    t[p+1] := ne;
    n := n + 1;
end;

procedure MAJ_Freq(mot : string ; var n : integer ; var t : tab_freq);
var
  p : integer;
begin
    p := Position_Mot(mot, n, t);
    if (p = 0) then
        Inserer_Mot(mot, n, t)
    else
        t[p].freq := t[p].freq + 1;
end;

procedure afficher(n : integer; var t : tab_freq);
var
  i : integer;
begin
    for i:=1 to n do
        Writeln(t[i].mot : 21, '-', t[i].freq : 3);
end;

procedure Compter_Mots(var f : text ; var n :integer ; var t : tab_freq);
var
  ch : string;
  c  : char;
begin
    Reset(f);
    ch := '';
    While (not EOF(f)) do
    begin
          Read(f, c);
          if (c = ' ') then
          begin
              ch := miniscule(ch);
              MAJ_Freq(ch, n, t);
              ch := '';
          end else ch := ch + c;

    end;
    ch := miniscule(ch);
    MAJ_Freq(ch, n, t);
    Close(f);
end;

var
  n : integer;
  f : text;
  t : tab_freq;
begin
        Assign(f, 'c:\exemple.txt');
        Compter_Mots(f, n, t);
        Afficher(n, t);
end.

Revenir en haut Aller en bas
http://ntic.moontada.net
 
Exercice 2 (Enregistrement et fichiers)
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» les exercice de chimie 2
» حل مشكل أختفاء option de dossier + تفعيل الخاصية

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
Sciences de l'informatique :: 4ème SI :: Programmation :: Exercices & Devoirs-
Sauter vers: