Compression d’un octet (traduction pascal)

Aller en bas

Compression d’un octet (traduction pascal)

Message  Admin le Dim 13 Mar - 15:58

ÉNONCÉ

Un CODEC est un logiciel compresseur décompresseur de fichiers. En effet, les suites de bits composant un fichier comportent des similitudes comme 10000111. Plutôt que de stocker la totalité de cet octet, On gagne de la place en écrivant 14031(qui se lit un quatre zéro 3 uns). Cet octet (huit bits) retrouvera ensuite son format original à la décompression.
Il s’agit alors de saisir une chaîne de huit chiffres formée uniquement de 0 et de 1 pour désigner un octet puis la compresser suivant le principe de compression de CODEC et enfin l’afficher
Exemple :
Si octet= « 10010111 »
Alors l’octet compressé est : « 1201031 »
Travail à faire :
1. Analyser ce problème en le décomposant en modules.
2. Analyser chacun des modules proposés.
3. Déduire un algorithme pour le programme principal et pour chaque module.

PASCAL
program compression_octet;
uses wincrt;
var
resultat,ch:string;

procedure saisie (var mot1:string);
var
chiffre:boolean;
l,i:integer;
begin
repeat
writeln('saisir une chaine de huit chiffres formée uniquement de 0 et 1 ');
readln(mot1);
l:=length(mot1);
chiffre:=true;
i:=0;
repeat
i:=i+1;
if not(( mot1[i] ='0') or (mot1[i] ='1') and (l= 8 )) then chiffre:=false;
until (chiffre=false) or (i=length(mot1));
until chiffre;
end;

procedure affichage(res1:string);
begin
writeln('l''octet compressé est:',res1);
end;

function compression(ch1:string):string;
var
ok:boolean;
c:char;
i,j:integer;
res,j1:string;
begin
i:=1;
res:='';
repeat
c:=ch[i];
j1:=c;
i:=i+1;
ok:=true;
j:=1;
repeat
if ch[i]=c then begin
i:=i+1;
j:=j+1; end
else ok:=false;
until (ok=false) or (i=9);

if j > 1
then begin
str(j,j1);
j1:=concat(j1,c); end;


res:=concat(res,j1);


until (i> 8 );
compression:=res;
end;

begin
writeln('*********** Compression d''un octet*******************');
saisie(ch);
resultat:=compression(ch);
affichage(resultat);
end.


Admin
Admin

Messages : 137
Date d'inscription : 29/12/2010

Voir le profil de l'utilisateur http://aidescolaire.yoo7.com

Revenir en haut Aller en bas

Revenir en haut

- Sujets similaires

 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum