From 74f6b061ba00747df679f9de13917de09d1d6397 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Y=C3=BBki?= <37001799+NyxiumYuuki@users.noreply.github.com> Date: Sat, 7 Dec 2019 18:26:56 +0100 Subject: [PATCH] First Commit --- Compression en codage de Huffman.pdf | Bin 0 -> 35093 bytes Yûki/README.md | 30 ++++++++ Yûki/Yûki/arbre_de_codage/Makefile | 19 +++++ Yûki/Yûki/arbre_de_codage/arbre_binaire.c | 69 ++++++++++++++++++ Yûki/Yûki/arbre_de_codage/arbre_binaire.h | 25 +++++++ .../frequence_dapparition_char.c | 15 ++++ Yûki/Yûki/arbre_de_codage/main.c | 24 ++++++ Yûki/Yûki/gestion_des_fichiers/bit_a_bit.c | 40 ++++++++++ Yûki/Yûki/gestion_des_fichiers/bit_a_bit.exe | Bin 0 -> 44048 bytes Yûki/Yûki/gestion_des_fichiers/bit_a_bit.o | Bin 0 -> 1304 bytes Yûki/Yûki/gestion_des_fichiers/text.txt | 1 + Yûki/arbre_de_codage/Makefile | 19 +++++ Yûki/arbre_de_codage/arbre_binaire.c | 69 ++++++++++++++++++ Yûki/arbre_de_codage/arbre_binaire.h | 25 +++++++ .../frequence_dapparition_char.c | 15 ++++ Yûki/arbre_de_codage/main.c | 24 ++++++ Yûki/gestion_des_fichiers/bit_a_bit.c | 40 ++++++++++ Yûki/gestion_des_fichiers/bit_a_bit.exe | Bin 0 -> 44048 bytes Yûki/gestion_des_fichiers/bit_a_bit.o | Bin 0 -> 1304 bytes Yûki/gestion_des_fichiers/text.txt | 1 + lorem_ipsum.txt | 1 + travaux_a_faire_projet_c.txt | 18 +++++ 22 files changed, 435 insertions(+) create mode 100644 Compression en codage de Huffman.pdf create mode 100644 Yûki/README.md create mode 100644 Yûki/Yûki/arbre_de_codage/Makefile create mode 100644 Yûki/Yûki/arbre_de_codage/arbre_binaire.c create mode 100644 Yûki/Yûki/arbre_de_codage/arbre_binaire.h create mode 100644 Yûki/Yûki/arbre_de_codage/frequence_dapparition_char.c create mode 100644 Yûki/Yûki/arbre_de_codage/main.c create mode 100644 Yûki/Yûki/gestion_des_fichiers/bit_a_bit.c create mode 100644 Yûki/Yûki/gestion_des_fichiers/bit_a_bit.exe create mode 100644 Yûki/Yûki/gestion_des_fichiers/bit_a_bit.o create mode 100644 Yûki/Yûki/gestion_des_fichiers/text.txt create mode 100644 Yûki/arbre_de_codage/Makefile create mode 100644 Yûki/arbre_de_codage/arbre_binaire.c create mode 100644 Yûki/arbre_de_codage/arbre_binaire.h create mode 100644 Yûki/arbre_de_codage/frequence_dapparition_char.c create mode 100644 Yûki/arbre_de_codage/main.c create mode 100644 Yûki/gestion_des_fichiers/bit_a_bit.c create mode 100644 Yûki/gestion_des_fichiers/bit_a_bit.exe create mode 100644 Yûki/gestion_des_fichiers/bit_a_bit.o create mode 100644 Yûki/gestion_des_fichiers/text.txt create mode 100644 lorem_ipsum.txt create mode 100644 travaux_a_faire_projet_c.txt diff --git a/Compression en codage de Huffman.pdf b/Compression en codage de Huffman.pdf new file mode 100644 index 0000000000000000000000000000000000000000..4ad91162664533a1f15cfc3d3c5ebf94227d9c6c GIT binary patch literal 35093 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 Préférences -> Paramètres -> Utilisateur -> Extensions -> Git -> Enabled -> Yes or No` +7. Ouvrir votre dossier dans l'onglet "Contrôle de Code Source" si ce n'est pas déjà fait avec le petit bouton à sa droite. +8. Dans la partie haut gauche mettez un message clair pour définir le commit puis pressez sur Entrer. + - Le changement ne s'est pas encore effectué sur le dossier dans **GitHub**, il ne l'est que localement pour l'instant. Donc, il faut associer votre dossier au répertoire sur **GitHub** (Vous ne pourrez pas encore "push" vos changements). + +9. Ajouter le répertoire distant + - Ouvrir la palette de commande *(CTRL + MAJ + P par défaut)* + - Rechercher `Git Add Remote` et pressez entrer + - Mettez un nom pour vous afin de reconnaître le dépôt + - Puis mettez ce lien : **https://github.com/NyxiumYuuki/Projet-C-Huffman.git** + - Publier enfin vos changements en appuyant sur le bouton en bas à droite ![Img VSCode Publier Modifications](https://cdn.vachot.fr/img/vscode_icon_publish_modifications_25x21.png) *(Il faudra vous connecter à votre compte GitHub)* + - ***Félicitations vous avez enfin fait votre premier commit !*** +10. Vous pouvez maintenant voir les changements entre les différents fichiers, voir l'avancement des autres collaborateurs et vous pouvez aussi commit vos changements en répétant les **étapes 7 et 8** diff --git a/Yûki/Yûki/arbre_de_codage/Makefile b/Yûki/Yûki/arbre_de_codage/Makefile new file mode 100644 index 0000000..b2b339d --- /dev/null +++ b/Yûki/Yûki/arbre_de_codage/Makefile @@ -0,0 +1,19 @@ +CC = gcc +CCOPTS = -Wall + +all: main + +arbre_naire.o: arbre_naire.c arbre_naire.h + ${CC} ${CCOPTS} -c arbre_naire.c + +arbre_binaire.o: arbre_binaire.c arbre_binaire.h + ${CC} ${CCOPTS} -c arbre_binaire.c + +main.o: main.c + ${CC} ${CCOPTS} -c main.c + +main: main.o arbre_naire.o arbre_binaire.o + ${CC} ${CCOPTS} -o main main.o arbre_naire.o arbre_binaire.o + +clean: + rm *.o ; rm main diff --git a/Yûki/Yûki/arbre_de_codage/arbre_binaire.c b/Yûki/Yûki/arbre_de_codage/arbre_binaire.c new file mode 100644 index 0000000..051dad3 --- /dev/null +++ b/Yûki/Yûki/arbre_de_codage/arbre_binaire.c @@ -0,0 +1,69 @@ +#include +#include +#include +#include "arbre_binaire.h" + +arbre creer_arbre_vide (void) +{ + return NULL ; +} + +arbre creer_arbre_huffman(Elt e, int p, arbre fg, arbre fd) +{ + noeud * tmp = malloc(sizeof(noeud)); + tmp->elt=e; + tmp->poids=p; + tmp->fils_gauche=fg; + tmp->fils_droit=fd; + return tmp; +} + +arbre fils_gauche(arbre a) +{ + assert(!est_arbre_vide(a)); + return a->fils_gauche; +} + +arbre fils_droit(arbre b) +{ + assert(!est_arbre_vide(b)); + return b->fils_droit; +} + +Elt racine(arbre a) +{ + assert(!est_arbre_vide(a)); + return a->elt; +} + +bool est_arbre_vide(arbre a) +{ + return (a == NULL) ; +} + +arbre creer_feuille(Elt e) +{ + return creer_arbre(e, creer_arbre_vide(), creer_arbre_vide()) ; +} + +bool est_feuille(arbre a) +{ + if (est_arbre_vide(a)) + return 0 ; + return (est_arbre_vide(a->fils_gauche) && est_arbre_vide(a->fils_droit)) ; +} + +void free_noeud(arbre a) +{ + assert(!est_arbre_vide(a)); + free(a); +} + +void free_arbre(arbre a) +{ + if(!est_arbre_vide(a)){ + free_arbre(fils_gauche(a)); + free_arbre(fils_droit(a)); + free(a); + } +} \ No newline at end of file diff --git a/Yûki/Yûki/arbre_de_codage/arbre_binaire.h b/Yûki/Yûki/arbre_de_codage/arbre_binaire.h new file mode 100644 index 0000000..beca338 --- /dev/null +++ b/Yûki/Yûki/arbre_de_codage/arbre_binaire.h @@ -0,0 +1,25 @@ +#ifndef __ARBRE_BINAIRE__ +#define __ARBRE_BINAIRE__ + +typedef char Elt; +typedef int bool; +struct znoeud { + Elt elt ; + int poids; + struct znoeud *fils_gauche; + struct znoeud *fils_droit; +}; +typedef struct znoeud noeud ; +typedef struct znoeud * arbre; + +arbre creer_arbre_vide(void); +arbre creer_arbre_huffman(Elt e, int p, arbre fg, arbre fd); +arbre fils_gauche(arbre a); +arbre fils_droit(arbre a); +Elt racine(arbre a); +bool est_arbre_vide(arbre a); + +arbre creer_feuille(Elt e) ; +bool est_feuille(arbre a) ; + +#endif diff --git a/Yûki/Yûki/arbre_de_codage/frequence_dapparition_char.c b/Yûki/Yûki/arbre_de_codage/frequence_dapparition_char.c new file mode 100644 index 0000000..0ec19e8 --- /dev/null +++ b/Yûki/Yûki/arbre_de_codage/frequence_dapparition_char.c @@ -0,0 +1,15 @@ +#include +#include + +struct zoccurence{ + int nb; + char lettre; +}; +typedef struct zoccurence occ; +typedef struct zoccurence * freq; + + + + + + diff --git a/Yûki/Yûki/arbre_de_codage/main.c b/Yûki/Yûki/arbre_de_codage/main.c new file mode 100644 index 0000000..4621c4d --- /dev/null +++ b/Yûki/Yûki/arbre_de_codage/main.c @@ -0,0 +1,24 @@ +#include +#include "arbre_binaire.h" + +struct zoccurence{ + int nb; + char lettre; +}; +typedef struct zoccurence occ; +typedef struct zoccurence * freq; + +int main () +{ + +} +/* + L est considéré comme ordonné +*/ +arbre huffman(arbre H, freq L[]) +{ + int i; + + printf(L[]->nb); + printf(L[]->lettre); +} \ No newline at end of file diff --git a/Yûki/Yûki/gestion_des_fichiers/bit_a_bit.c b/Yûki/Yûki/gestion_des_fichiers/bit_a_bit.c new file mode 100644 index 0000000..8346047 --- /dev/null +++ b/Yûki/Yûki/gestion_des_fichiers/bit_a_bit.c @@ -0,0 +1,40 @@ +#include +#include +#define BIN_MAX 8 + +void binaire(unsigned int n, char s[]); + +int main(int argc, char **argv){ + FILE *file; + char buffer; + int cursor,c; + file=fopen("text.txt","rb"); + // EOF : End Of File + while((c=fgetc(file))!=EOF){ + char sb[BIN_MAX+1]; + binaire(32,sb); + printf("%s\n",sb); + } + fclose(file); + return 0; +} + +void binaire(unsigned int n, char s[]){ + /* + Décomposition binaire d'un entier (=BIN_MAX); + s[BIN_MAX]= '\0'; + int i,r; + i=0; + while(n!=0){ + r = n%2; + n = n/2; + if(0<=(BIN_MAX-i-1) && (BIN_MAX-i-1)<=BIN_MAX){ + if(r==0) s[BIN_MAX-i-1]= '0'; + else s[BIN_MAX-i-1]= '1'; + i++; + } + } +} diff --git a/Yûki/Yûki/gestion_des_fichiers/bit_a_bit.exe b/Yûki/Yûki/gestion_des_fichiers/bit_a_bit.exe new file mode 100644 index 0000000000000000000000000000000000000000..c573037055f48f8ddc125c4deb232539d43fd630 GIT binary patch literal 44048 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 literal 0 HcmV?d00001 diff --git a/Yûki/Yûki/gestion_des_fichiers/bit_a_bit.o b/Yûki/Yûki/gestion_des_fichiers/bit_a_bit.o new file mode 100644 index 0000000000000000000000000000000000000000..f25e7dc7df9746b0ce5dc151ed1503cf956a40a5 GIT binary patch literal 1304 zcmZux&1(}u6n~R!+ePD7jf%ABf_q5OuBo4;SV`L~MQB9|VwJ$UiJQ3Ee6ZPQ2`LIo z!5D;k5j+U~8O2ku*pi!qe}D&tLVM^T2SKpDH=8t@x)0{f@BQXCGdpkJ%na)VvY8;j zDUJlD*v6vGvFna900GOrX={Q%7 z%NMq!H*xtaB4I<2B^tSgj&p*{RW(#qTNrf_ry@soOARl*ic_GmMmugtoF%dE`5^8m z4j@bWhNu_h>)5#~sv)N?t|O^7k%O%VHC1$eu&TO);M-x<)U?EDsA zM4hD_D1~ck^AjnCKG)O``??O%t^WVG5l3w@{2C~ITxqPWSV^D?P;9J%_*kM~EI(&IZ;sF0G>d07m4p>EG10g|pg>^QF95wn47B-kTEG`Eo5A_6cUr@rwZXo>( z+lQ|4_k5h{^BA@;^rJtBtrt%3p)-hx4+GWLagOeAPh1Ak2_C&h@6LU@hu$GN$wwvh zJsidMkdihR42;PB?gC_(H$5(|Wpy*>LST4{0(jp2hWX6tre)CCxdyy9k|qS%5$x!k z9rNBss_dZ8%HEqu#qF!{+(P;TK{nah#DgfKWR!&UC$|WCV}gw8g1)R{n&!<1 zW&^ZzzF@Qy1e__9?9TJyYBGkMYOmrlsfB#8oqNt`da-C&t!IoF1t+*Kj9f04K`|a{ KX)J5QpZo`_2FoP? literal 0 HcmV?d00001 diff --git a/Yûki/Yûki/gestion_des_fichiers/text.txt b/Yûki/Yûki/gestion_des_fichiers/text.txt new file mode 100644 index 0000000..402476b --- /dev/null +++ b/Yûki/Yûki/gestion_des_fichiers/text.txt @@ -0,0 +1 @@ +ABCDE \ No newline at end of file diff --git a/Yûki/arbre_de_codage/Makefile b/Yûki/arbre_de_codage/Makefile new file mode 100644 index 0000000..5f31453 --- /dev/null +++ b/Yûki/arbre_de_codage/Makefile @@ -0,0 +1,19 @@ +CC = gcc +CCOPTS = -Wall + +all: main + +arbre_naire.o: arbre_naire.c arbre_naire.h + ${CC} ${CCOPTS} -c arbre_naire.c + +arbre_binaire.o: arbre_binaire.c arbre_binaire.h + ${CC} ${CCOPTS} -c arbre_binaire.c + +main.o: main.c + ${CC} ${CCOPTS} -c main.c + +main: main.o arbre_naire.o arbre_binaire.o + ${CC} ${CCOPTS} -o main main.o arbre_naire.o arbre_binaire.o + +clean: + rm *.o ; rm main diff --git a/Yûki/arbre_de_codage/arbre_binaire.c b/Yûki/arbre_de_codage/arbre_binaire.c new file mode 100644 index 0000000..bae65d8 --- /dev/null +++ b/Yûki/arbre_de_codage/arbre_binaire.c @@ -0,0 +1,69 @@ +#include +#include +#include +#include "arbre_binaire.h" + +arbre creer_arbre_vide (void) +{ + return NULL ; +} + +arbre creer_arbre_huffman(Elt e, int p, arbre fg, arbre fd) +{ + noeud * tmp = malloc(sizeof(noeud)); + tmp->elt=e; + tmp->poids=p; + tmp->fils_gauche=fg; + tmp->fils_droit=fd; + return tmp; +} + +arbre fils_gauche(arbre a) +{ + assert(!est_arbre_vide(a)); + return a->fils_gauche; +} + +arbre fils_droit(arbre b) +{ + assert(!est_arbre_vide(b)); + return b->fils_droit; +} + +Elt racine(arbre a) +{ + assert(!est_arbre_vide(a)); + return a->elt; +} + +bool est_arbre_vide(arbre a) +{ + return (a == NULL) ; +} + +arbre creer_feuille(Elt e) +{ + return creer_arbre(e, creer_arbre_vide(), creer_arbre_vide()) ; +} + +bool est_feuille(arbre a) +{ + if (est_arbre_vide(a)) + return 0 ; + return (est_arbre_vide(a->fils_gauche) && est_arbre_vide(a->fils_droit)) ; +} + +void free_noeud(arbre a) +{ + assert(!est_arbre_vide(a)); + free(a); +} + +void free_arbre(arbre a) +{ + if(!est_arbre_vide(a)){ + free_arbre(fils_gauche(a)); + free_arbre(fils_droit(a)); + free(a); + } +} \ No newline at end of file diff --git a/Yûki/arbre_de_codage/arbre_binaire.h b/Yûki/arbre_de_codage/arbre_binaire.h new file mode 100644 index 0000000..01de6e5 --- /dev/null +++ b/Yûki/arbre_de_codage/arbre_binaire.h @@ -0,0 +1,25 @@ +#ifndef __ARBRE_BINAIRE__ +#define __ARBRE_BINAIRE__ + +typedef char Elt; +typedef int bool; +struct znoeud { + Elt elt ; + int poids; + struct znoeud *fils_gauche; + struct znoeud *fils_droit; +}; +typedef struct znoeud noeud ; +typedef struct znoeud * arbre; + +arbre creer_arbre_vide(void); +arbre creer_arbre_huffman(Elt e, int p, arbre fg, arbre fd); +arbre fils_gauche(arbre a); +arbre fils_droit(arbre a); +Elt racine(arbre a); +bool est_arbre_vide(arbre a); + +arbre creer_feuille(Elt e) ; +bool est_feuille(arbre a) ; + +#endif diff --git a/Yûki/arbre_de_codage/frequence_dapparition_char.c b/Yûki/arbre_de_codage/frequence_dapparition_char.c new file mode 100644 index 0000000..9f185d3 --- /dev/null +++ b/Yûki/arbre_de_codage/frequence_dapparition_char.c @@ -0,0 +1,15 @@ +#include +#include + +struct zoccurence{ + int nb; + char lettre; +}; +typedef struct zoccurence occ; +typedef struct zoccurence * freq; + + + + + + diff --git a/Yûki/arbre_de_codage/main.c b/Yûki/arbre_de_codage/main.c new file mode 100644 index 0000000..7148bf4 --- /dev/null +++ b/Yûki/arbre_de_codage/main.c @@ -0,0 +1,24 @@ +#include +#include "arbre_binaire.h" + +struct zoccurence{ + int nb; + char lettre; +}; +typedef struct zoccurence occ; +typedef struct zoccurence * freq; + +int main () +{ + +} +/* + L est considéré comme ordonné +*/ +arbre huffman(arbre H, freq L[]) +{ + int i; + + printf(L[]->nb); + printf(L[]->lettre); +} \ No newline at end of file diff --git a/Yûki/gestion_des_fichiers/bit_a_bit.c b/Yûki/gestion_des_fichiers/bit_a_bit.c new file mode 100644 index 0000000..8346047 --- /dev/null +++ b/Yûki/gestion_des_fichiers/bit_a_bit.c @@ -0,0 +1,40 @@ +#include +#include +#define BIN_MAX 8 + +void binaire(unsigned int n, char s[]); + +int main(int argc, char **argv){ + FILE *file; + char buffer; + int cursor,c; + file=fopen("text.txt","rb"); + // EOF : End Of File + while((c=fgetc(file))!=EOF){ + char sb[BIN_MAX+1]; + binaire(32,sb); + printf("%s\n",sb); + } + fclose(file); + return 0; +} + +void binaire(unsigned int n, char s[]){ + /* + Décomposition binaire d'un entier (=BIN_MAX); + s[BIN_MAX]= '\0'; + int i,r; + i=0; + while(n!=0){ + r = n%2; + n = n/2; + if(0<=(BIN_MAX-i-1) && (BIN_MAX-i-1)<=BIN_MAX){ + if(r==0) s[BIN_MAX-i-1]= '0'; + else s[BIN_MAX-i-1]= '1'; + i++; + } + } +} diff --git a/Yûki/gestion_des_fichiers/bit_a_bit.exe b/Yûki/gestion_des_fichiers/bit_a_bit.exe new file mode 100644 index 0000000000000000000000000000000000000000..c573037055f48f8ddc125c4deb232539d43fd630 GIT binary patch literal 44048 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 literal 0 HcmV?d00001 diff --git a/Yûki/gestion_des_fichiers/bit_a_bit.o b/Yûki/gestion_des_fichiers/bit_a_bit.o new file mode 100644 index 0000000000000000000000000000000000000000..f25e7dc7df9746b0ce5dc151ed1503cf956a40a5 GIT binary patch literal 1304 zcmZux&1(}u6n~R!+ePD7jf%ABf_q5OuBo4;SV`L~MQB9|VwJ$UiJQ3Ee6ZPQ2`LIo z!5D;k5j+U~8O2ku*pi!qe}D&tLVM^T2SKpDH=8t@x)0{f@BQXCGdpkJ%na)VvY8;j zDUJlD*v6vGvFna900GOrX={Q%7 z%NMq!H*xtaB4I<2B^tSgj&p*{RW(#qTNrf_ry@soOARl*ic_GmMmugtoF%dE`5^8m z4j@bWhNu_h>)5#~sv)N?t|O^7k%O%VHC1$eu&TO);M-x<)U?EDsA zM4hD_D1~ck^AjnCKG)O``??O%t^WVG5l3w@{2C~ITxqPWSV^D?P;9J%_*kM~EI(&IZ;sF0G>d07m4p>EG10g|pg>^QF95wn47B-kTEG`Eo5A_6cUr@rwZXo>( z+lQ|4_k5h{^BA@;^rJtBtrt%3p)-hx4+GWLagOeAPh1Ak2_C&h@6LU@hu$GN$wwvh zJsidMkdihR42;PB?gC_(H$5(|Wpy*>LST4{0(jp2hWX6tre)CCxdyy9k|qS%5$x!k z9rNBss_dZ8%HEqu#qF!{+(P;TK{nah#DgfKWR!&UC$|WCV}gw8g1)R{n&!<1 zW&^ZzzF@Qy1e__9?9TJyYBGkMYOmrlsfB#8oqNt`da-C&t!IoF1t+*Kj9f04K`|a{ KX)J5QpZo`_2FoP? literal 0 HcmV?d00001 diff --git a/Yûki/gestion_des_fichiers/text.txt b/Yûki/gestion_des_fichiers/text.txt new file mode 100644 index 0000000..402476b --- /dev/null +++ b/Yûki/gestion_des_fichiers/text.txt @@ -0,0 +1 @@ +ABCDE \ No newline at end of file diff --git a/lorem_ipsum.txt b/lorem_ipsum.txt new file mode 100644 index 0000000..a400117 --- /dev/null +++ b/lorem_ipsum.txt @@ -0,0 +1 @@ +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc auctor eros sed odio tristique pulvinar. Nam facilisis pellentesque cursus. Integer eu iaculis odio. Pellentesque dapibus metus sit amet ante tempor, in commodo nunc feugiat. Vestibulum ac facilisis nulla, bibendum sagittis mauris. Sed tincidunt imperdiet lorem ut scelerisque. Sed dapibus nulla quam, non tempus elit dictum eu.Etiam a lectus eu nulla feugiat lobortis. Suspendisse porta augue eros, vel convallis metus euismod eget. Curabitur maximus ligula eu lacus pellentesque, nec iaculis erat ultricies. Nulla bibendum tortor sed ex consectetur, quis accumsan arcu cursus. Ut finibus porttitor commodo. Cras pellentesque lorem eget neque pharetra molestie. Mauris ultricies molestie mattis. Etiam volutpat sit amet massa et congue. Nunc non venenatis nisl, sit amet finibus est. In vitae fermentum orci. Integer quis sem et est mollis aliquet. Mauris lacus arcu, aliquet non vulputate fringilla, pellentesque hendrerit mauris metus. \ No newline at end of file diff --git a/travaux_a_faire_projet_c.txt b/travaux_a_faire_projet_c.txt new file mode 100644 index 0000000..1c7f81b --- /dev/null +++ b/travaux_a_faire_projet_c.txt @@ -0,0 +1,18 @@ +GESTION DE FICHIERS : + - Structure Gérer les échanges avec le disque, mémorisant notamment l’état des échanges en cours + - Fonction Ouvrir un fichier binaire en lecture ou écriture + - Fonction Ecrire un bit dans un fichier binaire + - Fonction Lire un fichier binaire + - Fonction Fermer un fichier + +ARBRE DE CODAGE : + - Fonction Fréquence d'apparition des caractères dans un fichier + - tri quicksort + - Implémentation de l'algorithme de construction de l'arbre de codage (Module Arbres_Binaires) + - tri à bulle + +COMPRESSION : + - Fonction de compression d'un fichier texte dans un fichier binaire + +EXTRACTION (DECOMPRESSION) : + - Fonction d'extraction d'un fichier texte depuis un fichier compressé \ No newline at end of file