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 :

mise en oeuvre de TYPEDEF


Sujet :

C

  1. #1
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Avril 2010
    Messages
    115
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2010
    Messages : 115
    Points : 70
    Points
    70
    Par défaut mise en oeuvre de TYPEDEF
    Bonjour

    je voudrais definir une table de hachage comme structure comportant

    • TH table dehachage /*ici un tableau dont les cases sont des listes chainees*/
    • CAPA la capacite de la TH /* cap de tableau ki sera choisi par l'utilisateur*/
    • FH fonction de hachage /*la fonction pour choisir la position d'un element*/


    oOo IMPLEMENTATION oOo

    /* liste chainee LCA*/
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
          typedef struct Cellule {
          char* cle;
          int data;
          struct Cellule* suivante;
    }Cellule , *LCA;
    /*table de hachage*/
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    typedef int (*FH)(char* cle) // TYPE pointeur vers fonction de hachage
     
    typedef LCA TH[capacite] // probleme c'est que capacite est donne par l'utilisateur, elle defini apres!!!!
     
    struct TH_COMPLETE {
     
              int capacite;
              FH fh;
              TH th;
     
    }

    J'arrive pas à declarer un type de tableau de LCA de CAPACITE=capacite sachant que capacite pourrait change

    MERCI DAVANCE POUR TOUTE REPONSE

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 104
    Points : 1 750
    Points
    1 750
    Par défaut
    Dans ce cas, tu n'as pas trop le choix : il faut allouer de la mémoire, de manière dynamique (en utilisant malloc).

  3. #3
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Avril 2010
    Messages
    115
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2010
    Messages : 115
    Points : 70
    Points
    70
    Par défaut
    merci jeroman

    ici l'allocation de la memoire devra se faire en kel niveau

    merci davance

  4. #4
    Membre chevronné
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 104
    Points : 1 750
    Points
    1 750
    Par défaut
    Par contre, je n'avais pas fait attention que tu avais mis un typedef aussi sur le tableau. Le typedef n'est pas justifié à mon avis.

    Tu veux allouer un tableau de pointeurs sur structure ou un tableau de structure ?

  5. #5
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Avril 2010
    Messages
    115
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2010
    Messages : 115
    Points : 70
    Points
    70
    Par défaut
    bonsoir

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    typedef LCA TH[capacite]
    ICi je veux definr un type TH qui est un tableau de LDA de CAPACITE capacite

  6. #6
    Expert éminent
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Points : 8 389
    Points
    8 389
    Par défaut
    Si capacite est donné par l'utilisateur à l'exécution, c'est tout simplement impossible. Et si cele était possible, le typedef devrait apparaître après que l'utilisateur ait fourni la valeur de capacite, pas au niveau des déclarations globales. Ce que tu peux faire, c'est utiliser l'allocation dynamique de mémoire, ce qui se fait par le biais des fonctions malloc et compagnie. Après que l'utilisateur ait entré la valeur de capacite, tu crées ton tableau avec malloc. Voir les cours du site si tu n'as jamais utilisé cette fonction.

  7. #7
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Avril 2010
    Messages
    115
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2010
    Messages : 115
    Points : 70
    Points
    70
    Par défaut
    Merci melem

    par exemple dans l'intialisation ,ayant comme entrée un pointeur vers struct TH_COMPLETE
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    initialiser( TH_COMPLETE* tabl_hach)
     
    printf("veuillez entre la capacite souhaite)
     
    scanf("%d",(*tabl_hach)->capacité)
    Pour allouer de la mémoire on le fait normalement pour un pointeur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ptr=malloc(sizeof(*ptr)*xxx);
    mais ici on a un capacite de type int !!

    Et pour pouvoir creer le tableau qui represente la table de hachage avec malloc, je dois definir mon type comme ça ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    typedef int (*FH)(char* cle) // TYPE pointeur vers fonction de hachage
     
    typedef LCA* TH
     
    struct TH_COMPLETE {
     
              int capacite;
              FH fh;
              TH th;
     }

  8. #8
    Expert éminent
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Points : 8 389
    Points
    8 389
    Par défaut
    Citation Envoyé par router_ Voir le message
    Pour allouer de la mémoire on le fait normalement pour un pointeur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ptr=malloc(sizeof(*ptr)*xxx);
    mais ici on a un capacite de type int !!
    Et quel est le problème si capacite est un int ?

    Oui, le typedef est bon.

  9. #9
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Avril 2010
    Messages
    115
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2010
    Messages : 115
    Points : 70
    Points
    70
    Par défaut
    Bonjour,

    merci melem, j'ai avancé dans l'implémentation et ça compile et s'éxcute correctement.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème mise en oeuvre UDF
    Par lio33 dans le forum SQL
    Réponses: 5
    Dernier message: 18/11/2005, 21h50
  2. Documentation de mise en oeuvre
    Par babar_le_fou dans le forum C
    Réponses: 5
    Dernier message: 06/11/2005, 15h07
  3. Mise en oeuvre d'une standby
    Par armando123 dans le forum Oracle
    Réponses: 1
    Dernier message: 17/10/2005, 12h18
  4. [JMS] Mise en oeuvre
    Par tery dans le forum Java EE
    Réponses: 4
    Dernier message: 21/02/2005, 13h35

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