[ C } table de hachage
Fermé
stroumpf
Messages postés
289
Date d'inscription
mardi 17 juin 2008
Statut
Membre
Dernière intervention
1 mars 2009
-
28 juil. 2008 à 01:12
mamiemando Messages postés 33081 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 27 avril 2024 - 6 août 2008 à 10:30
mamiemando Messages postés 33081 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 27 avril 2024 - 6 août 2008 à 10:30
A voir également:
- [ C } table de hachage
- Table ascii - Guide
- Table des matières word - Guide
- Error accessing config table - Forum Ubuntu
- Les données fournies dans le fichier à télécharger peuvent être synthétisées par le tableau récapitulatif suivant. dans le fichier, générez ce tableau automatiquement (tableau croisé dynamique ou table de pilote) à partir des 4 premières colonnes. cinq valeurs manquent dans le tableau suivant. retrouvez-les dans votre tableau puis reportez-les, arrondies à l’entier le plus proche, dans la zone de réponse. ✓ - Forum Jeux vidéo
- Schema branchement table de mixage sur ampli - Forum Audio
4 réponses
mamiemando
Messages postés
33081
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
27 avril 2024
7 749
28 juil. 2008 à 20:53
28 juil. 2008 à 20:53
Question, tu es toujours restreinte au C? Parce qu'en C++ ça se code en 2 lignes :s
Sinon il faut parcourir ta liste et compter le nombre de maillon mais c'est pas super.
Ou encore faire une structure liste dans ce genre :
Au moment de créer ta liste et d'insérer supprimer des cellules, tu mets à jour les pointeur (début/fin et les suivants des cellules adjacentes) et le compteur longueur. Du coup plus besoin de parcourir la liste pour avoir le nombre de maillon.
Bonne chance
Sinon il faut parcourir ta liste et compter le nombre de maillon mais c'est pas super.
Ou encore faire une structure liste dans ce genre :
struct cellule_t{ struct cellule_t *suivant; char mot[50]; }; struct liste_t{ struct cellule_t *premier; struct cellule_t *dernier; unsigned longueur; };
Au moment de créer ta liste et d'insérer supprimer des cellules, tu mets à jour les pointeur (début/fin et les suivants des cellules adjacentes) et le compteur longueur. Du coup plus besoin de parcourir la liste pour avoir le nombre de maillon.
Bonne chance
mamiemando
Messages postés
33081
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
27 avril 2024
7 749
28 juil. 2008 à 21:10
28 juil. 2008 à 21:10
Je repose ma question, tu es toujours restreinte au C ou tu peux programmer en C++ ?
Est-ce que la fréquence c'est le nombre d'occurrence du mot ou le nombre de lignes ou le mot apparaît ?
Ton code n'étant pas complet il m'est impossible d'être sûre de ce que tu fais.
Bonne chance
Est-ce que la fréquence c'est le nombre d'occurrence du mot ou le nombre de lignes ou le mot apparaît ?
Ton code n'étant pas complet il m'est impossible d'être sûre de ce que tu fais.
Bonne chance
stroumpf
Messages postés
289
Date d'inscription
mardi 17 juin 2008
Statut
Membre
Dernière intervention
1 mars 2009
2
28 juil. 2008 à 21:16
28 juil. 2008 à 21:16
OUI, c'est imposé là le C :(
Conernant ma fonction elle compte la frequence de chaque mot d'apres sa liste de coordonné en comptant le nombre de ligne distinct de la liste des coordonnées.
elle prend en entree le mot et cherche dans la table de hachage le mot, et compte ses different num ligne .
Conernant ma fonction elle compte la frequence de chaque mot d'apres sa liste de coordonné en comptant le nombre de ligne distinct de la liste des coordonnées.
elle prend en entree le mot et cherche dans la table de hachage le mot, et compte ses different num ligne .
mamiemando
Messages postés
33081
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
27 avril 2024
7 749
29 juil. 2008 à 10:27
29 juil. 2008 à 10:27
Si par mot, ta liste est ordonnée d'abord sur les lignes et ensuite sur les colonnes c'est facile. Ca consiste juste à parcourir la liste et à incrémenter le compteur quand le numéro de ligne change. Ca ressemble à ce que tu as fait. Tu as réussi ?
stroumpf
Messages postés
289
Date d'inscription
mardi 17 juin 2008
Statut
Membre
Dernière intervention
1 mars 2009
2
29 juil. 2008 à 10:30
29 juil. 2008 à 10:30
Bonjour,
non, j'essaye jusquà maintenant.
merci
non, j'essaye jusquà maintenant.
merci
stroumpf
Messages postés
289
Date d'inscription
mardi 17 juin 2008
Statut
Membre
Dernière intervention
1 mars 2009
2
29 juil. 2008 à 10:43
29 juil. 2008 à 10:43
regarde ça, normallement il fonctionne :
mais il maffiche une erreur: " [Linker error] undefined reference to `calculFrequence(char*, L2**)' "
Là vraiement je copmrends rien :(
int calculFrequence(Liste **TableHash, char mot[50]){ Liste *p ; int cle; Coordonnees *c; int i,supp=0; cle=hash_cle(mot); for(p=TableHash[cle]; p!=NULL; p=p->suivant) { if(strcmp(p->m->mot, mot)==0){ c=p->c; for(c=p->c;c!=NULL;c=c->suivant) supp++; } } return supp; }
mais il maffiche une erreur: " [Linker error] undefined reference to `calculFrequence(char*, L2**)' "
Là vraiement je copmrends rien :(
mamiemando
Messages postés
33081
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
27 avril 2024
7 749
6 août 2008 à 10:30
6 août 2008 à 10:30
Une erreur de linkage signifie que le code utilise une fonction déclarée mais que son implémentation n'a pas été trouvée. Ca survient principalement dans deux cas de figure :
1- la fonction est déclarée mais pas implémentée
2- le fichier c est compilé sans le binaire contenant ladite implémentation (typiquement si ce code est dans un autre module). Si la fonction appartient a une librairie, il faut linker cette librairie avec le fichier c contenant le main (voir option -l et -L de gcc).
Vu le nom de la fonction tu es dans le premier cas de figure. Je pense que tu as dû coder ton programme en plusieurs fichiers (des .h et des .c constituant les modules, et un fichier .c contenant le main) et que lors de la compilation du main.c tu oublies de passer les modules (fichiers .o) en paramètre. Exemple :
1) Compiler le module plop (plop.h et plop.c a priori)
2) J'obtiens un plop.o (le binaire associé au module). Supposons que main.c utilise une fonction déclarée dans plop.h et implémentée dans plop.h. Je dois alors compiler main.c en passant plop.o en paramètre.
3) J'obtiens mon exécutable.
De la même façon un module M1 peut utiliser d'autre module M2 et auquel cas, il faut compiler M2 (pour obtenir M2.o), puis M1 (en passant M2.o en paramètre) etc. Tu vois immédiatement que pour qu'une compilation se passe bien, tu ne peux pas avoir un "cycle" d'inclusion de module, sinon ce n'est pas compilable.
À partir du moment où ton programme est décomposé en plusieurs modules et requiert plusieurs lignes de compilation, il est fortement recommandé de fournir un Makefile avec (cf wikipedia + google). En outre, il est possible de faire des Makefile générique qui construisent automatiquement les dépendances entre les différents modules.
Bonne chance
1- la fonction est déclarée mais pas implémentée
2- le fichier c est compilé sans le binaire contenant ladite implémentation (typiquement si ce code est dans un autre module). Si la fonction appartient a une librairie, il faut linker cette librairie avec le fichier c contenant le main (voir option -l et -L de gcc).
Vu le nom de la fonction tu es dans le premier cas de figure. Je pense que tu as dû coder ton programme en plusieurs fichiers (des .h et des .c constituant les modules, et un fichier .c contenant le main) et que lors de la compilation du main.c tu oublies de passer les modules (fichiers .o) en paramètre. Exemple :
1) Compiler le module plop (plop.h et plop.c a priori)
gcc -W -Wall -c plop.c
2) J'obtiens un plop.o (le binaire associé au module). Supposons que main.c utilise une fonction déclarée dans plop.h et implémentée dans plop.h. Je dois alors compiler main.c en passant plop.o en paramètre.
gcc -W -Wall -o mon_executable main.c plop.o
3) J'obtiens mon exécutable.
De la même façon un module M1 peut utiliser d'autre module M2 et auquel cas, il faut compiler M2 (pour obtenir M2.o), puis M1 (en passant M2.o en paramètre) etc. Tu vois immédiatement que pour qu'une compilation se passe bien, tu ne peux pas avoir un "cycle" d'inclusion de module, sinon ce n'est pas compilable.
À partir du moment où ton programme est décomposé en plusieurs modules et requiert plusieurs lignes de compilation, il est fortement recommandé de fournir un Makefile avec (cf wikipedia + google). En outre, il est possible de faire des Makefile générique qui construisent automatiquement les dépendances entre les différents modules.
Bonne chance
28 juil. 2008 à 21:04