Bonjour à tous
j'ai un probleme de compilation et je sais pas d'où il vient
en fait ce sonr 2 erreurs:
1- [Linker error] undefined reference to `hash_cle'
2- ld returned 1 exit status
voilà le main
et ca le header
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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94 #include<stdio.h> #include<stdlib.h> #include<string.h> #include "table_hash.h" #define TAILLEHASH 307 #define NBRSEQ 10 #define SEUIL 3 #define SEUIL 3 int main() { FILE *F=NULL; char mot[100]; int i,j; unsigned int cle,pt; int nl=1, pos=1; //nl=pos=1; int f; char c; //int seuil; //Liste **L; Liste *seq2=NULL; Liste **seq; Liste **TableHash; TableHash = (Liste **) malloc (TAILLEHASH * sizeof(Liste *)); for(i=0;i<TAILLEHASH;++i) TableHash[i] = NULL; pt=hash_cle("."); //printf("%d",pt); printf("debut du programme \n----------------------------------\n"); F=fopen("C:\\Users\\Cyrine\\Desktop\\Desktop\\projet\\projet\\essai.txt","r"); printf("Ouverture du Fichier \n----------------------------------\n"); while(fscanf(F,"%s",mot)==1){ cle = HashCode(mot); if ((cle!=pt ) && (! ChercherMotDansTableHash(TableHash,mot))) TableHash[cle] = InsertionEnTete(TableHash[cle],mot); if(fgetc(F)==EOF) break; } fclose(F); scanf("%s", c); } unsigned int HashCode (char *ligne) { int i; int Code=0; for (i=0;i< strlen(ligne);i++) Code=ligne[i]+31*Code; return Code%101; } unsigned int ChercherMotDansTableHash(Liste **TableHash,char *mot){ Liste *p; unsigned int cle; cle = HashCode(mot); for(p=TableHash[cle];p!=NULL;p=p->suivant) if(strcmp(p->m->mot,mot)==0) return 1; return 0; } mots *InsertionEnTeteMot(mots *m,char mot[50]){ mots *nouveau; nouveau = (mots *) malloc (sizeof(mots)); strcpy(nouveau->mot,mot); nouveau->suivant = m; return nouveau; } Liste *InsertionEnTete(Liste *L,char *mot){ Liste *nouveau; nouveau = (Liste *) malloc (sizeof(Liste)); nouveau->freq=0; nouveau->m=NULL; nouveau->m=InsertionEnTeteMot(nouveau->m,mot); //nouveau->m = InsertionEnQueueMot(nouveau->m,mot); nouveau->suivant = L; nouveau->c = NULL; return nouveau; }
J'attends vos réponses
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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71 #ifndef TABLE_HASH #define TABLE_HASH typedef struct c{ int pos; int nl; struct c *suivant; }Coordonnees; typedef struct L{ char mot[50]; Coordonnees *c; struct L *suivant; }Liste1; typedef struct m{ char mot[50]; struct m *suivant; }mots; typedef struct L2{ int freq; mots *m; Coordonnees *c; struct L2 *suivant; }Liste; int nb_lignes (FILE *fp) { int n=0; char c; while ((c = fgetc(fp)) != EOF) { if (c == '\n') { n++; } } return n; } Liste *InsertionEnTete(Liste *L,char *mot); Coordonnees *InsertionEnTeteCoordonnee(Coordonnees *C,int nl,int pos); mots *InsertionEnTeteMot(mots *m,char mot[50]); void AfficherListe(Liste *L); void AfficherCoordonnees(Coordonnees *C); void AfficheMot(mots *mot); char *dernierMot(Liste *p); unsigned int HashCode (char *ligne); void AfficherTableHash(Liste **TableHash); unsigned int ChercherMotDansTableHash(Liste **TableHash,char *mot); void PosLigne(FILE *F,Liste **TableHash); void frequent( Liste **TableHash , int mc); void ParcourirElementTableHash(Liste **TableHash,char *mot); void FiltreListe(Liste **L, int seuil); void Generer2seq(Liste **TableHash, int seuil, Liste **seq); Liste * GenererNseq(Liste **TableHash, int seuil,Liste **se, Liste **seq); void GenRA(Liste * l, Liste **TableHash); void elagage(Liste *t, Liste **s); int calculFrequence(Liste **TableHash, char mot[50]); Liste* supprimerElement(Liste* liste, Liste* sup); void Verifier(Liste **L); int MaxPos(Liste **TableHash,char mot[50],int ligne); Coordonnees* supprimerCooredonnees(Coordonnees* liste, Coordonnees* sup) ; mots *InsertionEnQueueMot(mots *m,char mot[50]); void rassembler (Liste** L); #endif
merci
PS: je programme sous dev c++ et sous win XP
Partager