Insertion structure

Fermé
fallout - 25 mars 2009 à 12:29
angebrune8 Messages postés 22 Date d'inscription jeudi 31 janvier 2008 Statut Membre Dernière intervention 26 mars 2009 - 26 mars 2009 à 01:51
Bonjour,j'essaie de faire une insertion dans une structure mais ca ne marche pas comme je le souhaite:




int main(void){
  srand((int)time(NULL));

    struct objets placard =creer_struct();

  for(int i =0;i<5;i++) {
      int var=rand()%100;
     inserer_structure(placard,var);
}
  return EXIT_SUCCESS;
}


le résultat est que ça m'insère toujours le même entier, ainsi dans ma structure je v avoir 5 fois la même valeur. ou alors si i est trop grand j'ai une erreur de segmentation.
quelqu'un aurait une idée svp?

8 réponses

help!!!
0
bon toujours personne
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 844
25 mars 2009 à 14:57
Salut,
A priori, tu n'envoies pas l'adresse de ta structure dans la fonction inserer_structure, ce qui explique peut-être ton problème.
Pourrais-tu poster le code de la fonction inserer_structure ? Ainsi que la définition de la structure ?

Cdlt
0
merci pour ta réponse voici le code que tu m'as demandé! lorrsque je fais un test avec inserer_b_arbre_entier(b,5);
insere_b_arbre_entier(b,18)... ca marche bien ca ne viendrait pas de la variable var?

struct b_arbre_entier{
b_arbre deleg;
};

struct b_arbre{

noeud racine;
int ordre;
int(*compare)(const void *,const void *);
void(*affiche)(const void*,const void*,int c);
size_t taille;
};


void
inserer_b_arbre(b_arbre self,void* e)
{

noeud r=self->racine;
if(getnb_cles(r)==2*self->ordre-1)
{
noeud s=creer_noeud(self->ordre,self->taille);
self->racine =s;
modifier_feuille(s,false);
modifier_nb_cles(s,0);
noeud_allouer_fils(s,2*self->ordre*(sizeof(getfils(self->racine))));

modifier_fils_i(s,r,0);

partager_enfant(self,s,0,r);
inserer_b_arbre_incomplet(self,s,e);
}
else
inserer_b_arbre_incomplet(self,r,e);
}
0
angebrune8 Messages postés 22 Date d'inscription jeudi 31 janvier 2008 Statut Membre Dernière intervention 26 mars 2009
25 mars 2009 à 16:04
ou es tu fiddy
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 844
25 mars 2009 à 16:37
Re,
J'ai demandé la fonction inserer_structure() ;-)).
Poste le programme en entier. Elimine les parties inutiles, et n'oublie pas d'utiliser la balise "code" pour respecter l'indentation.
0
angebrune8 Messages postés 22 Date d'inscription jeudi 31 janvier 2008 Statut Membre Dernière intervention 26 mars 2009
25 mars 2009 à 16:51
struct b_arbre_entier{
b_arbre deleg;
};

struct b_arbre{

    noeud racine;
    int ordre;
    int(*compare)(const void *,const void *);
    void(*affiche)(const void*,const void*,int c);
    size_t taille;
};


 void 
inserer_b_arbre_entier(b_arbre_entier self,int elem)
{
    int * entier = malloc(sizeof *entier);
    if (entier) {
    entier[0] = elem;
    inserer_b_arbre_incomplet(self->deleg, entier);
  }
  else fprintf(stderr, "entrer entier.\n" );
  
}

void 
inserer_b_arbre_incomplet(b_arbre self,noeud x, void* e)
{
  if(getnb_cles(x)==0){     // si la structure est vide ono insere directement
    modifier_cles_i(x,e,0);
    modifier_nb_cles(x,1);
    
  }
  else{
    int i=getnb_cles(x)-1;
    if(getfeuille(x))
      {
	while(i>=0 && self->compare(*(getcles(x)+i),e)>0)
	  i--;
	
	memmove((getcles(x)+i+2),(getcles(x)+i+1),(getnb_cles(x)-i-1)*self->taille);//on decale  pour inserer

	modifier_cles_i(x,e,i+1);
	modifier_nb_cles(x,getnb_cles(x)+1);// on affecte l'element à la structure
      	
      }


voilà
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 844
26 mars 2009 à 01:02
J'ai demandé la fonction inserer_structure() ;-)).
0
angebrune8 Messages postés 22 Date d'inscription jeudi 31 janvier 2008 Statut Membre Dernière intervention 26 mars 2009
26 mars 2009 à 01:51
en fait c'est que ej faisais un runtime dans ma boucle alors il m'inserait la meme chose à chaque fois.
par contre avec les chaines de caractère là ca m'insere toujours la meme chaine
0