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 compilation "hash table"


Sujet :

C

  1. #1
    Débutant 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
    Points : 117
    Points
    117
    Par défaut Erreur compilation "hash table"
    Bonjour,
    j'ai un probleme
    mon programme: creer une table de hachage afiin de stocker des liste d'information
    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
    typedef struct L {
         char mot[100];   
        char donnee[100];
        struct L *next;
    }Liste;
    
    struct HashTable {
      int mod;                      // Nombre d'éléments de la table
      Liste *table;            // Pointeur sur la table allouée
    };
    
    
    // déclaration des fonctions 
    
    unsigned hash_cle(char *chaine);
    int fonctHachage(liste_mot* );
    void hashTableInit(HashTable ht, int mod);
    
    void hashTableInit(HashTable& ht, int mod) 
    {
      // Nombre d'éléments de la table
      ht.mod = mod;
      
      // Allocation de la table
      if ((ht.table = (Liste*) malloc(mod * sizeof(Liste))) == 0) {
        fprintf(stderr, "Plus de mémoire\n");
        exit(1);
      }    
    
      // Initialisation de la table
      // Au début toutes les listes sont vides
      for (int i = 0; i < mod; i++)
        ht.table[i] = 0;        // Liste vide     là il ya l'erreur 1
    }
    
    // Affichage complet d'une table de hachage
    void hashTablePrint(HashTable& ht)
    {
      for (int i = 0; i < ht.mod; i++)
        //if (ht.table[i] != 0) {
      //    printf("Entrée %d\n", i);
         listePrint(ht.table[i]);
    }
    
    void listePrint(Liste l)
    {
     while (l != NULL) {
        printf("%d : %s", l->mot, l->donnee);
       l = l->next;
    }
    }
    
    int main(int argc, char *argv[]) 
    { char c;
    int A;
    int val;
        liste_mot* s =NULL;
      HashTable ht;
         // Initialisation de la table
      hashTableInit(ht, 110);
          val=fonctHachage(s);
       A=nbr_mot(s);
    // Affichage de la liste
     hashTablePrint(ht);   
       scanf("%c",c);
        return 0; 
    }



    Bon il ya 8 erreure :
    1- no match for 'operator=' in '*(ht->HashTable::table + (+(((unsigned int)i) * 204u))) = 0'


    aidez moi svp
    merci

  2. #2
    Expert éminent sénior
    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
    Points : 13 926
    Points
    13 926
    Par défaut
    Ceci est du C++.

  3. #3
    Membre confirmé
    Inscrit en
    Juillet 2005
    Messages
    512
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 512
    Points : 641
    Points
    641
    Par défaut
    liste_mot c'est quoi ce type il est défini nul part.

    Ce n'est pas un entier mais un element Liste tu ne peut donc pas lui affecter la valeur zero.

    J'abandonne y a trop d'erreurs.

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    780
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2006
    Messages : 780
    Points : 1 174
    Points
    1 174
    Par défaut
    pour moi c'est du C

  5. #5
    Débutant 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
    Points : 117
    Points
    117
    Par défaut re
    Citation Envoyé par nikko34 Voir le message
    pour moi c'est du C
    Oui NIKKO je programme en C , mais je c pas pourkoi on la deplacé ici.
    bref.
    ta une idéée comment faire?

  6. #6
    Membre confirmé
    Inscrit en
    Juillet 2005
    Messages
    512
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 512
    Points : 641
    Points
    641
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    void hashTableInit(HashTable& ht, int mod) 
    {
    C'est peut-être cette ligne qui a induite le modérateur en erreur.
    Car en C++ ça fait un paramètre passer par reference en C ça n'existe pas !
    Et une erreur de plus.

  7. #7
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Points : 4 625
    Points
    4 625
    Par défaut
    D'après le message d'erreur, le compilateur utilisé est un compilateur C++.

  8. #8
    Membre confirmé
    Inscrit en
    Juillet 2005
    Messages
    512
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 512
    Points : 641
    Points
    641
    Par défaut
    Citation Envoyé par loufoque
    D'après le message d'erreur, le compilateur utilisé est un compilateur C++.
    Oui, mais le code ressemble plus à du C qu'a du C++

  9. #9
    Rédacteur
    Avatar de Vincent Rogier
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 373
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 373
    Points : 5 306
    Points
    5 306
    Par défaut
    Bon, tu vois que tu persistes et signe !

    Une bonne fois pour toutes :
    • ce code est du code C++ (utilisation de références)
    • le compilo est un compilo C++ (cf. message erreur)
    Donc :
    • soit tu postes dans le forum C++
    • soit tu le modifies ton code pour que cela soit du C et tu le compiles comme source C
    Puisque tu ne semble pas même réaliser que le code posté est du C++, je te conseilles vivement de lire les tutos de la rubrique C afin d'acquérir les bases du langage C.

  10. #10
    Membre confirmé
    Inscrit en
    Juillet 2005
    Messages
    512
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 512
    Points : 641
    Points
    641
    Par défaut
    Citation Envoyé par vicenzo
    ce code est du code C++ (utilisation de références)
    Ce code est du C
    La réference c'est une erreur, regarde le prototype de la fonction il n'y a pas de reference.
    Citation Envoyé par vicenzo
    Bon, tu vois que tu persistes et signe !
    C'est toujours le même poste il a été remis ici car sur le forum C++ il est considéré comme du C.

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

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 381
    Points : 41 581
    Points
    41 581
    Par défaut
    Ça me rappelle le genre de code que postait beegees à ses débuts.
    cyrine aurait-il(elle) le même prof ?

  12. #12
    Rédacteur
    Avatar de Vincent Rogier
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 373
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 373
    Points : 5 306
    Points
    5 306
    Par défaut
    Citation Envoyé par Lucien63 Voir le message
    Ce code est du C
    La réference c'est une erreur, regarde le prototype de la fonction il n'y a pas de reference.

    C'est toujours le même poste il a été remis ici car sur le forum C++ il est considéré comme du C.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    void hashTableInit(HashTable ht, int mod);
     
    void hashTableInit(HashTable& ht, int mod)
    {
       /* ... */
    }
    Ce code ne peut pas compiler en C ! Son compilo ne dit rien car c'estun compilo C++ qui supporte la surcharge de fonction.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    void hashTableInit(HashTable& ht, int mod)
    {
      // Nombre d'éléments de la table
      ht.mod = mod;
    }
    Cet code est correct en C++ mais incorrect en C. Son compilo ne gueulant pas sur ca, cela veut encore une fois dire que c'est un compilo C++.

    Le fait que le compilo ne gueule pas sur "HashTable& ht" et que le message d'erreur est concerne un overloading d'opérateur C++ veut encore une fois dire que c'est un compilo C++.

    @Lucien63 : j'ai vraiment l'impression de parler le plutonien ....

Discussions similaires

  1. [MySQL] Supprimer les erreurs de syntaxe dues aux quotes
    Par gotenks dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 25/01/2006, 16h10

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