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) {
for(i = 0; i < motif->size; i++) {
printf("%s ", motif->tokens[i]);
}
printf("\n");
}
void afficherMotifTab(MotifTableau *motifTab) {
int i;
for(i = 0; i < motifTab->size; i++) {
afficherMotif(&motifTab->motifs[i]);
printf("\n");
}
}
......@@ -91,7 +91,6 @@ int nbCaracteresChaine(Word chaine) {
}
Motif* formaterMotif(Word chaineMotif, int longueurMot) {
//nwlr(nqxb)bm(dgqw)bh
Motif *motif = (Motif *) malloc(sizeof(Motif));
motif->tokens = (Word *) malloc(longueurMot*sizeof(Word*));
motif->size = longueurMot;
......@@ -102,12 +101,12 @@ Motif* formaterMotif(Word chaineMotif, int longueurMot) {
Word caracteresPossibles = "";
for(i = 0; i < lengthChaineMotif; i++) {
if(chaineMotif[i] == '(') {
printf("start concat\n");
//printf("start concat\n");
concat = true;
caracteresPossibles = "";
}
else if(chaineMotif[i] == ')') {
printf("end concat\n");
//printf("end concat\n");
concat = false;
motif->tokens[j] = caracteresPossibles;
j++;
......@@ -116,12 +115,12 @@ Motif* formaterMotif(Word chaineMotif, int longueurMot) {
if(concat) {
//concaténation
//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]));
}
else {
//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]);
//incrémentation du compteur lié au motif
j++;
......@@ -132,36 +131,22 @@ Motif* formaterMotif(Word chaineMotif, int longueurMot) {
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
// La fonction fait un malloc pour allouer l'espace memoire
Dictionnaire* readDicoFromFile(FILE* dataFile, unsigned int nbWords, unsigned int wordSize) {
//allocation mémoire
Dictionnaire *dico = (Dictionnaire *) malloc(sizeof(Dictionnaire));
dico->words = (Word *) malloc(nbWords*sizeof(Word*));
dico->words = (Word *) malloc(nbWords*sizeof(Word));
dico->size = nbWords;
char mot[wordSize];
//lecture fichier
//remplissage du dictionnaire
printf("starting\n");
int i;
for (i = 0; i < dico->size; i++) {
//printf("entree boucle");
fscanf(dataFile,"%s\n", mot);
dico->words[i] = mot;
copierChaine(dico->words[i], mot);
//ou strdup
dico->words[i] = (Word) malloc(wordSize*sizeof(char));
fscanf(dataFile,"%s\n", dico->words[i]);
}
printf("sortie boucle\n");
afficherDico(dico);
//printf("%s\n", dico->words[1]);
return dico;
}
......@@ -171,12 +156,13 @@ void detruire_dico(Dictionnaire* dico) {}
// Allocation en mémoire d'un tableau contenant les motifs de test
MotifTableau* readMotifTableauFromFile(FILE* dataFile, unsigned int nbTestCases, unsigned int wordSize) {
//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;
//lecture fichier
//remplissage du tableau motif
Word chaineMotif;
Word chaineMotif = calloc(400, sizeof(char));
int i;
for (i = 0; i < motifsTab->size; i++) {
fscanf(dataFile,"%s\n", chaineMotif);
......@@ -185,7 +171,6 @@ MotifTableau* readMotifTableauFromFile(FILE* dataFile, unsigned int nbTestCases,
Motif *motif = formaterMotif(chaineMotif, wordSize);
motifsTab->motifs[i] = *motif;
}
return motifsTab;
}
......@@ -227,9 +212,11 @@ void afficherNbMotsCorrespondantAuxMotifs(Dictionnaire* dico, MotifTableau* moti
for(j = 0; j < dico->size; j++) {
if(correspondance(dico->words[j], motifTab->motifs[i])) {
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[]){
//création du dictionnaire
Dictionnaire *dico = readDicoFromFile(dataFile, nbWords, wordSize);
//afficherDico(dico);
printf("%s", dico->words[1]);
//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
//afficherNbMotsCorrespondantAuxMotifs(dico, motifTab);
afficherNbMotsCorrespondantAuxMotifs(dico, motifTab);
//detruire_dico(dico);
//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