begin process at 2010 02 09 15:29:29
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Algorithme

 > 

Compression, Split & Cryptage

 > 

Un pb lors d'allocation de 3eme elts de type


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Un pb lors d'allocation de 3eme elts de type

mardi 5 mai 2009 à 18:18:29 | Un pb lors d'allocation de 3eme elts de type

eemikhm

Bonjour,le programme suivant est écrit et exécuter par DEVC++.
Pas d'erreurs de compilation, le problème c'est que lors de l'exécution de la 4eme itération de la boucle for, le programme s'arrête.
J'ai mit devant chaque instruction a l'intérieur de « for » un « printf »pour savoir il est ou le problème exactement et j'ai trouvé que : si par exemple le nombre des éléments de mon tableau égale à 5 qui est le même nombre d'itération de la boucle, le programme s'exécute très bien dans les 3 premières itération , lors de la quatrième itération il s'arrêt au niveau d'allocation d'espace mémoire de l'élément « racine » de type arbre
Je vous en pris aidez moi pour savoir pourquoi j'ai ce problème.
en attente de vous propositions.



LE CODE

#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<math.h>
#include<malloc.h>
main()
{
typedef struct elt {int info; struct elt*succ_gauche;struct elt*succ_droit;}arbre;
arbre**niveauzero;// declaration de vecteur qui va contenir les adresse des elements de type arbre
arbre*racine;//declaration d'un element de type arbre
int n,x,i;
printf("donnez le nombre d'elements de tableau");
scanf("%d",&n);
niveauzero=(arbre**)malloc(n*sizeof(arbre*));//Allocation d'espace pour le vecteur qui va contenir les adresses des feuilles
for(i=0;i<n;i++)
{printf("donnez une valeur ");
scanf("%d",&x);printf("lecture bien effectuer %d\n",i);
racine=(arbre*)malloc(sizeof(arbre*));printf("allocation est de l'element racine est termine %d\n",i);//Allocation d'espace pour chaque feuille
racine->info=x;printf("affectation de x au champ info de la racine %d\n",i);
racine->succ_gauche=racine->succ_droit=NULL;printf("initialisation de fils gauche et droit %d\n",i);
niveauzero[i]=racine;printf("affectation a niveaude i l'adresse de racine %d\n",i);

}

getche();
}

 								 								 								
mercredi 6 mai 2009 à 22:19:35 | Re : Un pb lors d'allocation de 3eme elts de type

nickydaquick

Membre Club

Salut

racine=(arbre*)malloc(sizeof(arbre)); // pas sizeof(arbre*)

Bonne continuation.

[ Lien ]
je suis heureux de faire partie d'une grande famille ...!
jeudi 7 mai 2009 à 00:17:56 | Re : Un pb lors d'allocation de 3eme elts de type

eemikhm

Merci beaucoup pour votre réponse, mon code il marche.
mais j'ai pas compris pourquoi sa marche pas avec "*"
normalement l'allocation d'espace dynamique de n'importe quel type de donnée se fait  comme sa:
var=(type)malloc(sizeof(type));
et dans mon cas mes éléments sont  des pointeurs de type arbre. c'est à dire (arbre*)
Merci d'avance
jeudi 7 mai 2009 à 00:56:01 | Re : Un pb lors d'allocation de 3eme elts de type

nickydaquick

Membre Club
Salut,

var = (pointeur sur type) malloc( sizeof(type) );

Bonne continuation.

[ Lien ]
je suis heureux de faire partie d'une grande famille ...!
jeudi 7 mai 2009 à 18:43:16 | Re : Un pb lors d'allocation de 3eme elts de type

eemikhm

Merci beaucoup pour ton aide  nickydaquick, Mais j'ai maintenant un autre problème
j'ai une structure "arbre" qui est la suivante:

typedef struct elt {int info;int code; struct elt*succ_gauche;struct elt*succ_droit;}arbre;

Et je veux  mettre dans cet  le champ code de la structure 0 s'il s'agit du fils gauche et 1 s'il s'agit d'un fils droit
pour faire ça j'ai créer une fonction préfixe qui est en bleu.
Mais lors de l'appel de la fonction par l'instruction prefixe(racine,0);  le champ CODE de l'arbre n'est pas modifier(" il m'affiche des valeurs trop grandes je crois qu'ils sont des adresses")
Aidez moi de trouver ou il est le problème

/* **************  premitive arbre vide*********/
int vide(arbre*a)
{if(a==NULL) return (1); else return (0);}
/* **************  premitive arbre fils GAUCHE*********/
arbre*filsgauche(arbre*a)
{return(a->succ_gauche);}
/* **************  premitive arbre FILS DROITTTTT*********/
arbre*filsdroit(arbre*a)
{return(a->succ_droit);}
/* **************  premitive arbre feuilllleeee*********/
int feuille(arbre*a)
{if (       (   (a->succ_gauche)==NULL)&&(     (a->succ_droit)==NULL   )        ) return (1);
 else return (0);
}
/* **************  PARCOURS PREFIXEEEEE*********/
void prefixe(arbre*a, int indice)
{if (!vide(a))
 {printf(" ******  %d  *****  code:   %d   ************\n", a->info, a->code);
  if(!feuille(a))
    {if (indice==0)  a->code=0; else  a->code=1;
     prefixe(filsgauche(a),0);
     prefixe(filsdroit(a),1);
     }
  else
   {if (indice==0)  a->code=0; else  a->code=1;}
 }
}


je sais peux être que la solution est de transférer le l'élément "a" par adresse c'est à dire "arbre**a", Mais je sais pas ou il faut introduire des modifications dans le fonction
Merci d'avance.
jeudi 7 mai 2009 à 18:56:57 | Re : Un pb lors d'allocation de 3eme elts de type

nickydaquick

Membre Club
Salut,

c'est parce que dans ton code (au debut de la page) la racine n'a pas de fils; sinon ton code me semble bon. Si tu as toujours ce pb poste ton code au complet.

Bonne continuation

[ Lien ]
je suis heureux de faire partie d'une grande famille ...!
jeudi 7 mai 2009 à 20:23:13 | Re : Un pb lors d'allocation de 3eme elts de type

eemikhm

Merci pour ton aide, il fallait remplir le champ code avant l'affichage.


Cette discussion est classée dans : arbre, type, printf, allocation, racine


Répondre à ce message

Sujets en rapport avec ce message

Problem de 'left operand must be a lvalue" [ par Orezza ] Voila je vous mets le code qui est un code trouver sur ce site mais que j'ai modifié. je ne comprends pas les erreurs de compilations pourriez-vous ra Problème pointeur en c++ [ par ch3mical ] Bonjourj'ai un problème avec une partie de code , lorsque je créer mon arbre binaire jai un message d'erreur lorsque je rappel ma fonction récursive . snifer pcap [ par thebadskull ] Bonjour voilà je suis entrain de faire un  sniffeur de paquets en C avec la librairie pcap Lorsque je recupére mes paquets je les affiches avec : - Petit problème pour créer un arbre binaire [ par dragarth1 ] Bonjour j'ai un travail à faire pour l'école, il faut que je crée un arbre binaire à partir d'un fichier, comme un arbre généalogique, la racine étant faire un projet enc [ par nana87 ] slt, j'ai eu un programme en c mais je dois le réorganiser sous forme des fichier pour faire un projet ,il y a quelqu'un qui peut m'aider pour ce prob conflit de type dans un tableau [ par pausecpp ] j'ai eu une réponse inattendue. voici un partie du code (l'essentiel ;) ):...#define N 5....float V[N]={0}; int i;for(i=0; i{printf("\nEntrer la coord Probleme avec les arbres ( operations de bases ) [ par Anysse ] Salut, alors voila j ai fais des fonctions d'ajout et d'affichage du contenu d'un arbre binaire, mais je sais pas pourkoi il affiche en plus des eleme Allocation de variable [ par CrazySeb ] Bonsoir a tous, j'ai un probleme assez bete qui m'empeche d'avancer dans mon travail... Je vous explique le probleme. J'ai deux sous fonctions qui Un problème avec l'union en C [ par IHECinformaticien ] Bonsoir/Bonjour, dans le code source au dessous j'ai défini une union qui contient 3 variables: une de type entier, l'autre de type réel et la dernièr modification et afichage des noeuds d'un arbre en C++ [ par isil4 ] Bonjour;Je ne comprend pas ou est le problème;je suis sur le cryptage de Huffman, dans la phase affectation codes, en ce moment, mon programme affecte


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,515 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales