IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C Discussion :

erreur de compilation


Sujet :

C

  1. #1
    Membre éclairé Avatar de étoile de mer
    Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    978
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 978
    Par défaut erreur de compilation
    Bonsoir,
    je compile mon projet, mais ya une erreur lors de la compilation dont je vois pas la cause
    Pouvez vous m'aider SVP?
    merci
    implicit declaration of function ‘LireToutesTablesFichBinaire1’|

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    MotCompact * pMots1 = LireToutesTablesFichBinaire(pTailles1, pAllocCaracs1, pAllocLignes1, langue1, maxSequence1, m);
    		MotCompact * pMots2 = LireToutesTablesFichBinaire1(pTailles2, pAllocCaracs2, pAllocLignes2, langue2, maxSequence2, m);

  2. #2
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Par défaut



    C'est dû au fait que tu utilises la fonction LireToutesTablesFichBinaire1 sans avoir inclut le fichier d'en-tête dans lequel se trouve la déclaration de la fonction

    EDIT
    Après relecture, tu nomme une fonction LireToutesTablesFichBinaire1 ne serait-ce pas LireToutesTablesFichBinaire (sans le 1) ?
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  3. #3
    Membre éclairé Avatar de étoile de mer
    Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    978
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 978
    Par défaut declared ‘static’ but never defined|
    Bonjour , j'ai une erreur dans mon code lors de la compilation :

    : ‘CalculerFreq’ declared ‘static’ but never defined|
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    static int CalculerFreq(ChainonMot const *pcMot);
    Des idées?
    Merci

  4. #4
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Par défaut
    Tu as une fonction CalculerFreq() qui est déclarée (elle a un prototype), elle est utilisée (une fonction de ton code l'appelle) mais elle n'est pas définie (tu n'as pas écris le code de la fonction CalculerFreq().

    Regarde du côté de l'orthographe du nom de cette fonction, c'est souvent cela.
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  5. #5
    Membre éclairé Avatar de étoile de mer
    Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    978
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 978
    Par défaut Segmentation Fault
    J'ai une erreur de segmentation lors de l'ecriture dans un fichier texte
    Une idée?
    Merci

    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
    printf("génération  des triggers inter-langues  \n");
    printf("ouverture   du  fichier...  \n");
    char nomFich[FILENAME_MAX];
    	FILE *pfOut;
    	pfOut = fopen(nomFich, "w");
     
    for(i=0 ; i<TAILLEHASH ; i++)
    {
    	for(j=0 ; j<TAILLEHASH ; j++)
    	{
    		ChainonMot const *pc;
    		for(pc=GetPremierC(&DblTableHash1fr[i][j]) ; pc!=NULL ; pc=GetNextC(pc))
    		{
    		for(k=0 ; k<TAILLEHASH ; k++)
    		{
    			for(l=0 ; l<TAILLEHASH ; l++)
    			{
    				ChainonMot const *pc2;
    				for(pc2=GetPremierC(&DblTableHash1en[k][l]) ; pc2!=NULL ; pc2=GetNextC(pc2))
    				{
    					TraiterCoupleMots(pc, pc2,pfOut);
    				}
    			}
    		}
    	}
    }
    }
     fclose(pfOut);
    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
    void TraiterCoupleMots(ChainonMot const *pc, ChainonMot const *pc2,FILE *fout)
    {
    	ChainonCoord const *pcCoord;
    	ChainonCoord const *pcCoord2;
     
     
     for(pcCoord = coord_GetPremierC(GetPtrCoordC(pc)) ; pcCoord!=NULL ; pcCoord=coord_GetNextC(pcCoord))
    	{
    	for(pcCoord2 = coord_GetPremierC(GetPtrCoordC(pc2)) ; pcCoord2!=NULL ; pcCoord2=coord_GetNextC(pcCoord2))
    		{
     
    		if((GetLigne(pcCoord2)==GetLigne(pcCoord)))
    		{
            fprintf (fout,"anneen");
    		printf("%s  \n", GetMot(pc2));
    		printf("->");
    		printf("%s  \n", GetMot(pc));
    		}
    		}
    	}
    }

  6. #6
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Par défaut
    On peut voir le corps de la fonction GetMot() ?
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  7. #7
    Membre émérite Avatar de SofEvans
    Homme Profil pro
    Développeur C
    Inscrit en
    Mars 2009
    Messages
    1 089
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Développeur C

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 089
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    char nomFich[FILENAME_MAX];
    	FILE *pfOut;
    	pfOut = fopen(nomFich, "w");
    Ce n'est pas bon.
    Ta segmentation fault vient du fait qu'il ne peut ouvrir nomfich et donc pfOut se retrouve avec NULL, ensuite, tu essaye d'ecrire dans un pointeur qui pointent n'importe ou.

    Remplace par ceci avec le bon chemin
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    	FILE *pfOut = fopen("chemin_et_nom_fichier.txt", "w");

  8. #8
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 409
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 409
    Par défaut
    Citation Envoyé par ram-0000 Voir le message
    On peut voir le corps de la fonction GetMot() ?
    GetMot() retourne juste un pointeur constant vers le tableau de caractères (à taille variable, comme dit précédemment) du ChainonMot passé en paramètre.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  9. #9
    Membre éclairé Avatar de étoile de mer
    Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    978
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 978
    Par défaut format ‘%d’ expects type ‘int’, but argument 3 has type ‘double’|
    Bonsoir,
    J'ai une erreur de compilation qui s'affiche format ‘%d’ expects type ‘int’, but argument 3 has type ‘double’|
    à ce niveau
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
       fprintf(fout,"%d  \n",im);
    je vois pas pourquoi il n'accepte pas le type double dans ce cas (je vais avoir des chiffre de ce genre : 0.000000000058)
    Une idée?
    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
     
    void TraiterCoupleMots(ChainonMot const *pc, ChainonMot const *pc2,FILE *fout,int   nbligne)
    {
    	ChainonCoord const *pcCoord;
    	ChainonCoord const *pcCoord2;
    	double  im=0;
    	int nblignes;
    	int LC=0;
     
     
     for(pcCoord = coord_GetPremierC(GetPtrCoordC(pc)) ; pcCoord!=NULL ; pcCoord=coord_GetNextC(pcCoord))
    	{
    	for(pcCoord2 = coord_GetPremierC(GetPtrCoordC(pc2)) ; pcCoord2!=NULL ; pcCoord2=coord_GetNextC(pcCoord2))
    		{
     
    		if((GetLigne(pcCoord2)==GetLigne(pcCoord)))
    		{
           //Ŝ fprintf (fout,"anneen");
    		fprintf(fout,   "%s ", GetMot(pc));
    		fprintf(fout,"->");
    		fprintf(fout,"%s  \n", GetMot(pc2));
    		LC=nbrLignesCommunes(pc,pc2);
    		im=info_mut(pc,pc2,nblignes);
           fprintf(fout,"%d  \n",im);
     
    		}
    		}
    	}
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    double info_mut(ChainonMot const *pc, ChainonMot const *pc2,int nblignes)
    {
        int  IM=0;
        IM=nbrLignesCommunes(pc,pc2)*log(nbrLignesCommunes(pc,pc2));
    }
    Merci

  10. #10
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 409
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 409
    Par défaut
    Cette fois, essaie de réfléchir un peu par toi-même.
    • Regarde le type de im
    • Regarde la doc de printf().
    • Regarde ta chaîne de format.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  11. #11
    Membre éclairé Avatar de étoile de mer
    Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    978
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 978
    Par défaut recuperer un pointeur (structure de type chainon)
    Bonsoir
    J'ai une erreur de compitation au niveau de ma nouvelle focntion qui pour une chaine de caractere determine le pointeur apporprié,
    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
     ChainonMot * permutCharToChainon(char *m,TableHachageMot   *t)
     {
         int    i,j;
    
         for( i=0;i<TAILLEHASH;i++)
         {
             for(j=0;j<TAILLEHASH;j++)
             {
                 ChainonMot const *pc2;
                    ChainonMot const *pc;
    				for(pc2=GetPremierC(&t[i][j]) ; pc2!=NULL ; pc2=GetNextC(pc2))
    				{
    				    if(GetMot(pc2)==m)
    				    {
    				    pc=  pc2;
    				    }
    				    break;
    				}
    
    				}
         }
    
    return  pc2;
     }
    erreur:
    erreur: ‘pc2’ undeclared (first use in this function)
    erreur: (Each undeclared identifier is reported only once|
    je vois pas pourquoi il reconnair pas pc2 bien qu'elle est bien déclarée
    Merci

  12. #12
    Expert confirmé
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Par défaut
    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
    ChainonMot * permutCharToChainon(char *m,TableHachageMot   *t)
     {
    ....
     
         for( i=0;i<TAILLEHASH;i++)
         {
             for(j=0;j<TAILLEHASH;j++)
             {
                 ChainonMot const *pc2;
                 .....
              }
         }
     
    return  pc2;
     }
    pc2 est défini dans le bloc des boucles for. Il est indéfini ailleurs.

  13. #13
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 409
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 409
    Par défaut
    pc2 n'est déclaré que dans la boucle for de j. De plus, je pense que c'est pc que tu veux vraiment retourner (à supposer que tu le veuilles vraiment, car je ne comprends pas pourquoi tu parcoures la table de hachage dans ce cas au lieu d'utiliser la valeur de hachage du mot).

    Enfin, == permet pas de comparer des chaînes, et fais gaffe à tes const (aussi bien pour m que pour le parcours et le retour).
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  14. #14
    Membre éclairé Avatar de étoile de mer
    Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    978
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 978
    Par défaut
    Citation Envoyé par Médinoc Voir le message
    pc2 n'est déclaré que dans la boucle for de j. De plus, je pense que c'est pc que tu veux vraiment retourner (à supposer que tu le veuilles vraiment, car je ne comprends pas pourquoi tu parcoures la table de hachage dans ce cas au lieu d'utiliser la valeur de hachage du mot).

    Enfin, == permet pas de comparer des chaînes, et fais gaffe à tes const (aussi bien pour m que pour le parcours et le retour).
    Merci Médinoc, je vois pas ce que tu veux dire par "utiliser la valeur de hachage du mot"
    Tu peux m'expliquer un peu stp, c'est tres gentil
    Bien Cordialemnt

  15. #15
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 409
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 409
    Par défaut
    Si on a fait une table de hachage, c'est pour l'utiliser et rendre la recherche plus rapide: Pas pour faire une stupide recherche linéaire dessus...

    Malheureusement, je n'ai plus en tête le nom des fonctions de recherche. Mais elles existent dans le projet.

    Note: À plus tard, je rentre chez moi.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  16. #16
    Membre éclairé Avatar de étoile de mer
    Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    978
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 978
    Par défaut
    c'est cette fonction dont tu parle?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    /* Hache une chaîne de caractères. */
    unsigned int hash_chaine(const char * chn)
    {
    	unsigned int val = 0;
    	for (; *chn != '\0'; ++chn)
    	{
    		val = *chn + 31 * val;
    	}
    	return val % TAILLEHASH;
    }
    je vois pas comment focntioner, et comment faire sans parcourir toute la table de hachage
    MErci

  17. #17
    Membre éclairé Avatar de étoile de mer
    Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    978
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 978
    Par défaut
    Voilà ce que j'ai trouvé dans hachage.cinc
    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
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    struct NOM_FONCTION(RechercheHash)
     
    {
     
    	int (*cmp)(TYPE_CHAINON const *, TYPE_CHAINON const *);
     
    	TYPE_CHAINON const *ref;
     
    };
     
     
     
    static int NOM_FONCTION(AppelleComparateurHash)(TYPE_CHAINON const *pc, intptr_t userData)
     
    {
     
    	struct NOM_FONCTION(RechercheHash) const * pcRech = (struct NOM_FONCTION(RechercheHash) const *)userData;
     
    	return pcRech->cmp(pc, pcRech->ref);
     
    }
     
     
     
    TYPE_CHAINON ** NOM_FONCTION(RechercherHashPtr)(
     
     TYPE_LISTE TableHash[],
     
     TYPE_CHAINON const *pc,
     
     unsigned int (hashproc)(TYPE_CHAINON const *), 
     
     int (*cmp)(TYPE_CHAINON const *, TYPE_CHAINON const *)
     
     )
     
    {
     
    	unsigned int const iHash = hashproc(pc);
     
     
     
    	struct NOM_FONCTION(RechercheHash) rech;
     
    	rech.cmp = cmp;
     
    	rech.ref = pc;
     
     
     
    	return NOM_FONCTION(ChercherPtr)(&TableHash[iHash], NOM_FONCTION(AppelleComparateurHash), (intptr_t)&rech);
     
    }
     
     
     
    TYPE_CHAINON * NOM_FONCTION(RechercherHash)(
     
     TYPE_LISTE TableHash[],
     
     TYPE_CHAINON const *pc,
     
     unsigned int (hashproc)(TYPE_CHAINON const *), 
     
     int (*cmp)(TYPE_CHAINON const *, TYPE_CHAINON const *)
     
     )
     
    {
     
    	unsigned int const iHash = hashproc(pc);
     
     
     
    	struct NOM_FONCTION(RechercheHash) rech;
     
    	rech.cmp = cmp;
     
    	rech.ref = pc;
     
     
     
    	return NOM_FONCTION(Chercher)(&TableHash[iHash], NOM_FONCTION(AppelleComparateurHash), (intptr_t)&rech);
     
    }
     
     
     
    TYPE_CHAINON const * NOM_FONCTION(RechercherHashC)(
     
     TYPE_LISTE const TableHash[],
     
     TYPE_CHAINON const *pc,
     
     unsigned int (hashproc)(TYPE_CHAINON const *), 
     
     int (*cmp)(TYPE_CHAINON const *, TYPE_CHAINON const *)
     
     )
     
    {
     
    	unsigned int const iHash = hashproc(pc);
     
     
     
    	struct NOM_FONCTION(RechercheHash) rech;
     
    	rech.cmp = cmp;
     
    	rech.ref = pc;
     
     
     
    	return NOM_FONCTION(ChercherC)(&TableHash[iHash], NOM_FONCTION(AppelleComparateurHash), (intptr_t)&rech);
     
    }
    je sais pas lavec quelle travailler, sachant que je veux rechercher un mot dans une table de hachage pour renvoyer un type ChainonMot
    Merci

  18. #18
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 409
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 409
    Par défaut
    Ces fonctions semblent très bien pour la table de hachage simple, mais il doit y avoir un équivalent pour la double.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  19. #19
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 409
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 409
    Par défaut
    Voici les fonctions de recherche, pour table simple et double:
    Code C : 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
    ChainonMot * RechercheHashEx(ListeMot TableHash[], const char *mots)
    {
    	unsigned int const idx = HachageCompletMots(mots);
    	return ChercherMot(&TableHash[idx], mots);
    }
    ChainonMot * RechercheDoubleHashEx(TableHachageMot DblTableHash[], const char *mots)
    {
    	unsigned int const idx = HachagePartielMotsPrefixe(mots);
    	return RechercheHashEx(DblTableHash[idx], mots);
    }
    ChainonMot const * RechercheHashExC(ListeMot const TableHash[], const char *mots)
    {
    	unsigned int const idx = HachageCompletMots(mots);
    	return ChercherMotC(&TableHash[idx], mots);
    }
    ChainonMot const * RechercheDoubleHashExC(TableHachageMot const DblTableHash[], const char *mots)
    {
    	unsigned int const idx = HachagePartielMotsPrefixe(mots);
    	return RechercheHashExC(DblTableHash[idx], mots);
    }
    Ajoute-les dans hachage.c, juste en-dessous de la fonction InsertionDoubleHashEx2().

    Note sur les noms: Les noms se terminent par "Ex", pour ne pas confondre avec ceux des fonctions génériques de table de hachage (dans hachage.cinc).
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  20. #20
    Membre éclairé Avatar de étoile de mer
    Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    978
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 978
    Par défaut
    Re,
    Là je fais un feed back à la fonction main :
    J'ai remarqué un comportement bizarre, mais je sais pas si c'est normal ou non : à l'aider du debugger , j'ai remarque que le compilateur n'entre pas au dela de la boucle
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for(i=0;i<TAILLEHASH;i++)
    {
    for(j=0 ; j<=TAILLEHASH ; j++)
    	{
    c'est à dire il fait la 1ere boucle FOR , puis la 2eme puis il retourne à la 1ere et puis la 2eme etc..
    jusquà atteindre une valeur de j=180

    Là je comprends pas trop
    Merci pour vos reponses utiles

    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
    95
    96
    97
    98
    99
    100
    101
    102
    int main(int argc, char *argv[])
    {
        ChainonMot const *pc;
    int i,j,k,l;
    int freq=0;
    TableHachageMot *DblTableHash1en =CreerDoubleTableHachage();
    
    TableHachageMot *DblTableHash2en    =CreerDoubleTableHachage();
    TableHachageMot *DblTableHash1fr    =CreerDoubleTableHachage();
    TableHachageMot *DblTableHash2fr    =CreerDoubleTableHachage();
    int nbLignes1;
    	ChainonCoord const *pcCoord;
    
    
    	#ifdef _MSC_VER
    	{
    		int tmpFlag = _CrtSetDbgFlag( _CRTDBG_REPORT_FLAG );
    		tmpFlag |= _CRTDBG_CHECK_ALWAYS_DF;
    		_CrtSetDbgFlag( tmpFlag );
    	}
    	#endif
    
    	if(TraiterFichier(DblTableHash1en, DblTableHash2en, "en", &nbLignes1)!=EXIT_SUCCESS)
    		return EXIT_FAILURE;
    for(i=0;i<TAILLEHASH;i++)
    {
    for(j=0 ; j<=TAILLEHASH ; j++)
    	{
    		for(pc=GetPremierC(&DblTableHash1en[i][j]) ; pc!=NULL ; pc=GetNextC(pc))
    		{
    		    printf("%s  \n",GetMot(pc));
    		    for(pcCoord = coord_GetPremierC(GetPtrCoordC(pc)) ; pcCoord!=NULL ; pcCoord=coord_GetNextC(pcCoord))
                {
                    printf("%i %i \n",GetLigne(pcCoord),j);
    
                }
    		}
    }
    }
    
    
    if(TraiterFichier(DblTableHash1fr, DblTableHash2fr, "fr", &nbLignes1)!=EXIT_SUCCESS)
    		return EXIT_FAILURE;
    
    
    printf("génération  des triggers inter-langues  \n");
    printf("ouverture   du  fichier...  \n");
    
    	FILE *pfOut = fopen("triggers.txt", "w");
    
    for(i=0 ; i<=TAILLEHASH ; i++)
    {
    	for(j=0 ; j<=TAILLEHASH ; j++)
    	{
    		//ChainonMot const *pc;
    		for(pc=GetPremierC(&DblTableHash1fr[i][j]) ; pc!=NULL ; pc=GetNextC(pc))
    		{
    		for(k=0 ; k<TAILLEHASH ; k++)
    		{
    			for(l=0 ; l<TAILLEHASH ; l++)
    			{
    				ChainonMot const *pc2;
    				for(pc2=GetPremierC(&DblTableHash1en[k][l]) ; pc2!=NULL ; pc2=GetNextC(pc2))
    				{
    
    
    					TraiterCoupleMots(pc, pc2,pfOut,nbLignes1);
    				}
    			}
    		}
    	}
    }
    }
     fclose(pfOut);
    pfOut = fopen("triggers.txt", "a");
    for(i=0 ; i<=TAILLEHASH ; i++)
    {
    	for(j=0 ; j<=TAILLEHASH ; j++)
    	{
    		for(pc=GetPremierC(&DblTableHash2fr[i][j]) ; pc!=NULL ; pc=GetNextC(pc))
    		{
    		for(k=0 ; k<TAILLEHASH ; k++)
    		{
    			for(l=0 ; l<TAILLEHASH ; l++)
    			{
    				ChainonMot const *pc2;
    				for(pc2=GetPremierC(&DblTableHash1en[k][l]) ; pc2!=NULL ; pc2=GetNextC(pc2))
    				{
    
    
    					TraiterCoupleMots1(pc, pc2,pfOut,nbLignes1,&DblTableHash1en,&DblTableHash1fr);
    				}
    			}
    		}
    	}
    }
    }
    fclose(pfOut);
    
    return EXIT_SUCCESS;
    
    }

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 4 1234 DernièreDernière

Discussions similaires

  1. Erreur de compilation après modification du Uses
    Par DevelOpeR13 dans le forum Langage
    Réponses: 5
    Dernier message: 30/10/2007, 14h23
  2. Réponses: 2
    Dernier message: 23/09/2003, 14h32
  3. Réponses: 10
    Dernier message: 22/09/2003, 21h58
  4. Réponses: 4
    Dernier message: 27/08/2003, 21h34
  5. Réponses: 2
    Dernier message: 04/03/2003, 23h24

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo