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 :

Pointeur et allocation dynamique


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Cycles en Informatique
    Inscrit en
    Juin 2007
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Cycles en Informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2007
    Messages : 67
    Par défaut Pointeur et allocation dynamique
    Bonjour,

    J'ai une structure dans laquelle j'ai créer une tableau d'élement d'une liste qui est dynamiquececi est une contraite venant de mon simulateur que je ne peux pas en aucun cas écarte. Le format est donnée ci-dessous:


    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
     
    typedef  struct _cord _t   cord_t  *cord_pt;
    typedef  struct _point_arbre_t   point_arbre_t  *point_arbre_pt;
    typedef  struct _voisin_t  voisin_t   *voisin_pt;
    typedef  struct _donne_t donne_t   *donne_pt;
     
    struct _cord_t {
       double  x;
       double  y;
       double  z;
    };
     
    struct _voisin_t {
        int identite;
        cord_pt position_voisins;
    };
     
    struct _point_arbre_t {
      int id;
      int Nfils;
      cord_pt position;
      int taille_tab;
      voisin_pt  tab;
    };
     
     
    fin format structure.
     
     
    //Nb : nombre d'elements du tableau
     
    //paquet_pt pour former un paquet de donner à expèdier au voisins
     
    paquet_pt  paquet = malloc(sizeof(struct _donne_t)  + Nb*sizeof(_point_arbre_)) ;
    point_arbre_pt donnee  = (struct point_arbre *) paquet;
     
    //affectation 
     
    donnee->id  = 1;
    donnee->Nfils = 4;
    donnee->position->x = cord_en_x;
    donnee->position->y = cord_en_y;
    donnee->position->z = cord_en_z;
    donnee->taille_tab    = valeur_connu
     
    //Pour la suite voila comment je procède pour remplir le tableau
     
    voisin_pt voisin = (struct _voisin_t *) (2*sizeof(int) + sizeof(struct _cord_t));
     
    // ceci fait pointe le pointeur sur l'element l'élement suivant après les affections prècedentes
     
    // le   neoud parcourt la liste des voisins en remplissant maintenant le table voisins.
    for(i = 0; i < valeur_connu; i++) {
    voisin[i].identite  = val_connu;
    voisin[i]->position_voisins.x = val_connu;
    voisin[i]->position_voisins.y = val_connu;
    voisin[i]->position_voisins.z = val_connu;
    }
    Ainsi se termine la phase de remplissage de mon paquet, si j'essaie d'afficher par la même façon sauf que pour le tableau j'utilise :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    for(i= 0; i < valleur_connu; i++) {
    voisin_pt voisin = (struct _voisin_t *) (s*sizeof(int) + sizeof(struct _cord_t) + (i + 1)*sizeof(struct _voisin_t));
     
    je n ai pas les meme résulats et pour le dernier élement il affiche des valeur très bizzard !!, très grand.
     
    }
    Voila grosso mode ce que ça ressemble la partie qui me bloque.
    Est que quelqu'un arrive avoir quoi sait le problème car je galère sur ça.
    Merci

  2. #2
    Membre émérite Avatar de crocodilex
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    697
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 697
    Par défaut
    Que comptes-tu faire avec ceci ?
    Citation Envoyé par boula Voir le message
    voisin_pt voisin = (struct _voisin_t *) (2*sizeof(int) + sizeof(struct _cord_t));
    [/CODE]
    Ton pointeur n'a aucune chance d'être initialisé correctement....

  3. #3
    Membre confirmé
    Homme Profil pro
    Cycles en Informatique
    Inscrit en
    Juin 2007
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Cycles en Informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2007
    Messages : 67
    Par défaut
    C'est accèder au au premier element constituant le bloc de mémoire pour mon tableau de la liste des voisins.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    voisin_pt voisin = (struct _voisin_t *) (2*sizeof(int) + sizeof(struct _cord_t));
    Si t'as une idée pour retire cet inconvénient je serai "preneur".

  4. #4
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2008
    Messages
    1 515
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France

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

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 515
    Par défaut
    Il faudrait que tu nous explique un peu mieux ce que tu cherches à faire. Le code que tu as posté est incomplet, incompréhensible, et probablement incorrect.

  5. #5
    Membre confirmé
    Homme Profil pro
    Cycles en Informatique
    Inscrit en
    Juin 2007
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Cycles en Informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2007
    Messages : 67
    Par défaut
    Principe:

    C'est dans un graphe , il y a chaque noeud qui envoie dans son voisinage des paquets. Chaque paquet contient des informations sur le noeud (est une structure ) tel identité, position géographique nombre de noeud voisins, et un tableau (dynamique) contenant la liste de ces voisins. la structure décrivant les voisins est composés des champs identité et position géographique aussi.

    Je remplis les premiers elements de la structure noeud puis ensuite j'alloue le bloc de mémoire restant qui décrit le tableau des voisins à un pointeur de type voisins; que je remplis par les informations sur l'ensemble des noeuds formant mon voisinage.

    Voilà en quelque sorte ce que j'aimerai faire.

  6. #6
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    un voisin serait simplement représenté par une adresse

    Un ensemble de voisins par un tableau d'adresses (ou au pire une liste chaînée, mis là ça commence à devenir compliqué : listes chaînée d"éléments de listes chaînée).

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

Discussions similaires

  1. allocation dynamique d'un tableau de pointeurs
    Par Dilettante dans le forum C++
    Réponses: 9
    Dernier message: 29/06/2007, 23h41
  2. Réponses: 67
    Dernier message: 13/02/2007, 18h08
  3. Réponses: 6
    Dernier message: 04/01/2007, 01h30
  4. Réponses: 13
    Dernier message: 01/10/2006, 00h25
  5. allocation dynamique et tableaux de pointeurs
    Par gbardy dans le forum 4D
    Réponses: 3
    Dernier message: 06/07/2006, 11h08

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