nouvelle version fonctionnel avec le test de base

parent f950bcdc
3 5 4
abc
bca
dac
dbc
cba
(ab)(bc)(ca)
abc
(abc)(abc)(abc)
(zyx)bc
\ No newline at end of file
...@@ -47,13 +47,13 @@ void afficherMotif(Motif *motif) { ...@@ -47,13 +47,13 @@ void afficherMotif(Motif *motif) {
for(i = 0; i < motif->size; i++) { for(i = 0; i < motif->size; i++) {
printf("%s ", motif->tokens[i]); printf("%s ", motif->tokens[i]);
} }
printf("\n");
} }
void afficherMotifTab(MotifTableau *motifTab) { void afficherMotifTab(MotifTableau *motifTab) {
int i; int i;
for(i = 0; i < motifTab->size; i++) { for(i = 0; i < motifTab->size; i++) {
afficherMotif(&motifTab->motifs[i]); afficherMotif(&motifTab->motifs[i]);
printf("\n");
} }
} }
...@@ -91,7 +91,6 @@ int nbCaracteresChaine(Word chaine) { ...@@ -91,7 +91,6 @@ int nbCaracteresChaine(Word chaine) {
} }
Motif* formaterMotif(Word chaineMotif, int longueurMot) { Motif* formaterMotif(Word chaineMotif, int longueurMot) {
//nwlr(nqxb)bm(dgqw)bh
Motif *motif = (Motif *) malloc(sizeof(Motif)); Motif *motif = (Motif *) malloc(sizeof(Motif));
motif->tokens = (Word *) malloc(longueurMot*sizeof(Word*)); motif->tokens = (Word *) malloc(longueurMot*sizeof(Word*));
motif->size = longueurMot; motif->size = longueurMot;
...@@ -102,12 +101,12 @@ Motif* formaterMotif(Word chaineMotif, int longueurMot) { ...@@ -102,12 +101,12 @@ Motif* formaterMotif(Word chaineMotif, int longueurMot) {
Word caracteresPossibles = ""; Word caracteresPossibles = "";
for(i = 0; i < lengthChaineMotif; i++) { for(i = 0; i < lengthChaineMotif; i++) {
if(chaineMotif[i] == '(') { if(chaineMotif[i] == '(') {
printf("start concat\n"); //printf("start concat\n");
concat = true; concat = true;
caracteresPossibles = ""; caracteresPossibles = "";
} }
else if(chaineMotif[i] == ')') { else if(chaineMotif[i] == ')') {
printf("end concat\n"); //printf("end concat\n");
concat = false; concat = false;
motif->tokens[j] = caracteresPossibles; motif->tokens[j] = caracteresPossibles;
j++; j++;
...@@ -116,12 +115,12 @@ Motif* formaterMotif(Word chaineMotif, int longueurMot) { ...@@ -116,12 +115,12 @@ Motif* formaterMotif(Word chaineMotif, int longueurMot) {
if(concat) { if(concat) {
//concaténation //concaténation
//stockage de la chaine générée dans une case token du motif //stockage de la chaine générée dans une case token du motif
printf("concat en cours\n"); //printf("concat en cours\n");
caracteresPossibles = concatenate(caracteresPossibles, char2str(chaineMotif[i])); caracteresPossibles = concatenate(caracteresPossibles, char2str(chaineMotif[i]));
} }
else { else {
//conversion du caractère en chaine de caractère //conversion du caractère en chaine de caractère
printf("%s\n", char2str(chaineMotif[i])); //printf("%s\n", char2str(chaineMotif[i]));
motif->tokens[j] = char2str(chaineMotif[i]); motif->tokens[j] = char2str(chaineMotif[i]);
//incrémentation du compteur lié au motif //incrémentation du compteur lié au motif
j++; j++;
...@@ -132,36 +131,22 @@ Motif* formaterMotif(Word chaineMotif, int longueurMot) { ...@@ -132,36 +131,22 @@ Motif* formaterMotif(Word chaineMotif, int longueurMot) {
return motif; return motif;
} }
void copierChaine(Word chaine, Word chaineTransfert) {
int length = strlen(chaineTransfert);
int i;
for (i = 0; i < length; i++) {
chaine[i] = chaineTransfert[i];
}
}
// Lecture du fichier et création du dictionnaire // Lecture du fichier et création du dictionnaire
// La fonction fait un malloc pour allouer l'espace memoire // La fonction fait un malloc pour allouer l'espace memoire
Dictionnaire* readDicoFromFile(FILE* dataFile, unsigned int nbWords, unsigned int wordSize) { Dictionnaire* readDicoFromFile(FILE* dataFile, unsigned int nbWords, unsigned int wordSize) {
//allocation mémoire //allocation mémoire
Dictionnaire *dico = (Dictionnaire *) malloc(sizeof(Dictionnaire)); Dictionnaire *dico = (Dictionnaire *) malloc(sizeof(Dictionnaire));
dico->words = (Word *) malloc(nbWords*sizeof(Word*)); dico->words = (Word *) malloc(nbWords*sizeof(Word));
dico->size = nbWords; dico->size = nbWords;
char mot[wordSize];
//lecture fichier //lecture fichier
//remplissage du dictionnaire //remplissage du dictionnaire
printf("starting\n");
int i; int i;
for (i = 0; i < dico->size; i++) { for (i = 0; i < dico->size; i++) {
//printf("entree boucle"); //ou strdup
fscanf(dataFile,"%s\n", mot); dico->words[i] = (Word) malloc(wordSize*sizeof(char));
dico->words[i] = mot; fscanf(dataFile,"%s\n", dico->words[i]);
copierChaine(dico->words[i], mot);
} }
printf("sortie boucle\n");
afficherDico(dico);
//printf("%s\n", dico->words[1]);
return dico; return dico;
} }
...@@ -171,12 +156,13 @@ void detruire_dico(Dictionnaire* dico) {} ...@@ -171,12 +156,13 @@ void detruire_dico(Dictionnaire* dico) {}
// Allocation en mémoire d'un tableau contenant les motifs de test // Allocation en mémoire d'un tableau contenant les motifs de test
MotifTableau* readMotifTableauFromFile(FILE* dataFile, unsigned int nbTestCases, unsigned int wordSize) { MotifTableau* readMotifTableauFromFile(FILE* dataFile, unsigned int nbTestCases, unsigned int wordSize) {
//allocation mémoire //allocation mémoire
MotifTableau *motifsTab = (MotifTableau *) malloc(sizeof(MotifTableau)); MotifTableau *motifsTab = (MotifTableau * ) malloc(sizeof(MotifTableau));
motifsTab->motifs = (Motif * ) malloc(wordSize*sizeof(Motif));
motifsTab->size = nbTestCases; motifsTab->size = nbTestCases;
//lecture fichier //lecture fichier
//remplissage du tableau motif //remplissage du tableau motif
Word chaineMotif; Word chaineMotif = calloc(400, sizeof(char));
int i; int i;
for (i = 0; i < motifsTab->size; i++) { for (i = 0; i < motifsTab->size; i++) {
fscanf(dataFile,"%s\n", chaineMotif); fscanf(dataFile,"%s\n", chaineMotif);
...@@ -185,7 +171,6 @@ MotifTableau* readMotifTableauFromFile(FILE* dataFile, unsigned int nbTestCases, ...@@ -185,7 +171,6 @@ MotifTableau* readMotifTableauFromFile(FILE* dataFile, unsigned int nbTestCases,
Motif *motif = formaterMotif(chaineMotif, wordSize); Motif *motif = formaterMotif(chaineMotif, wordSize);
motifsTab->motifs[i] = *motif; motifsTab->motifs[i] = *motif;
} }
return motifsTab; return motifsTab;
} }
...@@ -227,9 +212,11 @@ void afficherNbMotsCorrespondantAuxMotifs(Dictionnaire* dico, MotifTableau* moti ...@@ -227,9 +212,11 @@ void afficherNbMotsCorrespondantAuxMotifs(Dictionnaire* dico, MotifTableau* moti
for(j = 0; j < dico->size; j++) { for(j = 0; j < dico->size; j++) {
if(correspondance(dico->words[j], motifTab->motifs[i])) { if(correspondance(dico->words[j], motifTab->motifs[i])) {
nbMotsCorrespondants++; nbMotsCorrespondants++;
printf("mot : %s\n", dico->words[j]);
afficherMotif(&motifTab->motifs[i]);
} }
} }
printf("Case #%i: %i", i, nbMotsCorrespondants); printf("Case #%i: %i\n", i+1, nbMotsCorrespondants);
} }
} }
...@@ -259,11 +246,11 @@ int main(int argc, char *argv[]){ ...@@ -259,11 +246,11 @@ int main(int argc, char *argv[]){
//création du dictionnaire //création du dictionnaire
Dictionnaire *dico = readDicoFromFile(dataFile, nbWords, wordSize); Dictionnaire *dico = readDicoFromFile(dataFile, nbWords, wordSize);
//afficherDico(dico); //afficherDico(dico);
printf("%s", dico->words[1]);
//création d'un tableau de motif //création d'un tableau de motif
//MotifTableau *motifTab = readMotifTableauFromFile(dataFile, nbTestCases, wordSize); MotifTableau *motifTab = readMotifTableauFromFile(dataFile, nbTestCases, wordSize);
//afficherMotifTab(motifTab);
//affichage du nombre de mot du dictionnaire qui correspondent au motif pour chaque test //affichage du nombre de mot du dictionnaire qui correspondent au motif pour chaque test
//afficherNbMotsCorrespondantAuxMotifs(dico, motifTab); afficherNbMotsCorrespondantAuxMotifs(dico, motifTab);
//detruire_dico(dico); //detruire_dico(dico);
//detruire_motifs(motifTab); //detruire_motifs(motifTab);
......
No preview for this file type
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment