Add file organization

This commit is contained in:
NyxiumYuuki 2019-12-07 20:24:56 +01:00
parent ccddc6a1af
commit 1795f0287b
No known key found for this signature in database
GPG key ID: 03E8F3CF3183323A
9 changed files with 140 additions and 26 deletions

View file

@ -0,0 +1,56 @@
#include <assert.h>
#include <stdlib.h>
#include "liste.h"
Freq creer_liste_vide(){
return NULL;
}
int est_liste_vide(Freq l){
return(l==NULL);
}
Freq ajouter(int nb, char lettre, Freq l){
Occ * tmp;
tmp=malloc(sizeof(Occ));
tmp->nb=nb;
tmp->lettre=lettre;
tmp->suiv=l;
return tmp;
}
char tete(Freq l){
assert(!est_liste_vide(l));
return(l->lettre);
}
Freq queue(Freq l){
assert(!est_liste_vide(l));
return(l->suiv);
}
void liberer_liste(Freq l){
if(!est_liste_vide(l)){
liberer_liste(queue(l));
free(l);
}
}
Freq liberer_maillon(Freq l){
assert(!est_liste_vide(l));
Occ * tmp = l->suiv;
free(l);
return tmp;
}
int rechercher(char lettre,Freq l){
if(est_liste_vide(l)){
return 0;
}
else if(lettre==tete(l)){
return 1;
}
else{
return rechercher(lettre,queue(l));
}
}

View file

@ -0,0 +1,20 @@
#ifndef __LISTE_OCCURENCE__
#define __LISTE_OCCURENCE__
struct zoccurence{
int nb;
char lettre;
struct zoccurence *suiv;
};
typedef struct zoccurence Occ;
typedef struct zoccurence * Freq;
Freq creer_liste_vide();
int est_liste_vide(Freq l);
Freq ajouter(int nb, char lettre, Freq l);
int tete(Freq l);
Freq queue(Freq l);
void liberer_liste(Freq l);
Freq liberer_maillon(Freq l);
int rechercher(char lettre, Freq l);
#endif

View file

@ -1,15 +1,9 @@
#include <stdio.h> #include <stdio.h>
#include "arbre_binaire.h" #include "arbre_binaire.h"
struct zoccurence{
int nb;
char lettre;
};
typedef struct zoccurence occ;
typedef struct zoccurence * freq;
int main () int main ()
{ {
freq Test[5]={{7,'a'},{1,'c'},{3,'g'},{1,'t'},{1,'END'}};
} }
/* /*

View file

@ -7,14 +7,21 @@ void binaire(unsigned int n, char s[]);
int main(int argc, char **argv){ int main(int argc, char **argv){
FILE *file; FILE *file;
char buffer; char buffer;
int cursor,c; int cursor,c,i;
file=fopen("text.txt","rb"); file=fopen("text.txt","rb");
char text_b[5][BIN_MAX+1];
i=0;
// EOF : End Of File // EOF : End Of File
while((c=fgetc(file))!=EOF){ while((c=fgetc(file))!=EOF){
char sb[BIN_MAX+1]; char sb[BIN_MAX+1];
binaire(32,sb); binaire(c,sb);
printf("%s\n",sb); printf("%s\n",sb);
} }
for(i=0;i<5;i++){
for(int j=0;j<BIN_MAX;j++){
printf("%c",text_b[i][j]);
}
}
fclose(file); fclose(file);
return 0; return 0;
} }
@ -22,7 +29,6 @@ int main(int argc, char **argv){
void binaire(unsigned int n, char s[]){ void binaire(unsigned int n, char s[]){
/* /*
Décomposition binaire d'un entier (<BIN_MAX) et place celle-ci dans une chaîne de caractères passée en argument (s) Décomposition binaire d'un entier (<BIN_MAX) et place celle-ci dans une chaîne de caractères passée en argument (s)
*/ */
assert(n>=BIN_MAX); assert(n>=BIN_MAX);
s[BIN_MAX]= '\0'; s[BIN_MAX]= '\0';
@ -37,4 +43,8 @@ void binaire(unsigned int n, char s[]){
i++; i++;
} }
} }
int k;
for(k=BIN_MAX-i-1;k>=0;k--){
s[k]= '0';
}
} }

View file

@ -0,0 +1,4 @@
/*
Fonctions liés à la gestion de fichiers
*/

View file

@ -0,0 +1,3 @@
/*
Prototypes de gestion_fichiers.c + variables define + structure(s)
*/

View file

@ -1,3 +1,4 @@
TRAVAUX :
GESTION DE FICHIERS : GESTION DE FICHIERS :
- Structure Gérer les échanges avec le disque, mémorisant notamment létat des échanges en cours - 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 Ouvrir un fichier binaire en lecture ou écriture
@ -16,3 +17,29 @@ COMPRESSION :
EXTRACTION (DECOMPRESSION) : EXTRACTION (DECOMPRESSION) :
- Fonction d'extraction d'un fichier texte depuis un fichier compressé - Fonction d'extraction d'un fichier texte depuis un fichier compressé
FICHIERS A PREVOIR :
Makefile
main_compress.c
main_decompress.c
GESTION DES FICHIERS :
- gestion_fichiers.h
- gestion_fichier.c
ARBRE DE CODAGE :
- arbre_binaire.h
- arbre_binaire.c
(Utile pour stocker le nombre d'occurence d'un caractère)
- liste.h
- liste.c
INSTRUCTION A FAIRE PENDANT LE CODAGE :
- Commenter chaque fonction (ce qu'elle fait avec entrée et sortie)
- Commenter des parties non trivial (évident)