Bonjour,
Là je commence à situer un peu le souci je pense
Bon quand j'ai fait un printf pour savoir le contenu de la table de hacha des 2sequence: j'ai bien trouvé la séquence "savais tu"(qui se trouve au 1ere cas du tableau)
,
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 int TableHachage_BiSequence_ajouter_seq(struct TableHachage_BiSequence *pThis, const MotCompact* pNouvelSeq) { struct BiSequence bs = { NULL, NULL, NULL }; unsigned int cle = hash_chaine(GetMotCompact(pNouvelSeq)); bs.seq = pNouvelSeq; printf("%s\n",GetMotCompact(bs.seq)); return TableauDynamique_BiSequence_ajouter(&(pThis->seaux[cle]), &bs); }
par contre ici
la séquence "savais tu" est absente
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42 int TableHachage_BiSequence_ajouter_mots(struct TableHachage_BiSequence *pThis, const MotCompact* pNouveauMotG, const MotCompact* pNouveauMotD) { const char* motG = GetMotCompact(pNouveauMotG); const char* motD = GetMotCompact(pNouveauMotD); char* seqSim = NULL; size_t nbLettersEnsemble = strlen(motG) + strlen(motD) + 2; // + 2 car il nous faut un espace et un '\0' unsigned int cle = 0; seqSim = malloc(nbLettersEnsemble * sizeof(char)); if ( seqSim == NULL ) { printf("Problème allocation mémoire dans TableHachage_BiSequence_ajouter_mots\n"); return -1; } // Reconstruction de la séquence à partir de deux mots strcpy(seqSim, motG); strcat(seqSim, " "); strcat(seqSim, motD); cle = hash_chaine(seqSim); // Grace à la clé nous avons la BiSequence correspondante, donc nous remplissons la structure avec les mots // Comme nous avons une tablea de hachage qui contient des tableaux dynamique, le premier élément n'est peut être pas le bon // Nous parcourons le tableau pour savoir struct BiSequence * pSeq = RechercherMot(pThis->seaux[cle].tab, pThis->seaux[cle].taille, seqSim); if (pSeq!=NULL) { pSeq->MotGauche = pNouveauMotG; pSeq->MotDroit = pNouveauMotD; printf("%s%s\n",GetMotCompact(pSeq->seq),GetMotCompact(pSeq->MotGauche)); printf("La sequence n'a pas ete trouve\n"); } free (seqSim); return 0; }
Tu pense qu'il ya un probleme au niveau de la recherche de la séquence ?
Reste un peu flou
Partager