Erreur dans malloc
Fermé
Ange Angelique
Messages postés
43
Date d'inscription
dimanche 24 août 2008
Statut
Membre
Dernière intervention
18 janvier 2012
-
3 mai 2009 à 23:57
Ange Angelique Messages postés 43 Date d'inscription dimanche 24 août 2008 Statut Membre Dernière intervention 18 janvier 2012 - 12 mai 2009 à 22:25
Ange Angelique Messages postés 43 Date d'inscription dimanche 24 août 2008 Statut Membre Dernière intervention 18 janvier 2012 - 12 mai 2009 à 22:25
A voir également:
- Erreur dans malloc
- Erreur 1004 vba ✓ - Forum VB / VBA
- Erreur 1000 france tv - Forum MacOS
- Youtube une erreur s'est produite ✓ - Forum YouTube
- Free erreur 38 ✓ - Forum Mobile
- Code erreur s05-05 - Forum Téléviseurs
5 réponses
Légère erreur du débutant.
void* malloc (int taille)
Telle est la définition de la fonction 'malloc'.
Il te faut donc écrire:
I=(ElementPoids*)malloc(sizeof(struct ElementPoids));
car je suppose que 'I' est ainsi défini: ElementPoids* I;
Bon courage.
void* malloc (int taille)
Telle est la définition de la fonction 'malloc'.
Il te faut donc écrire:
I=(ElementPoids*)malloc(sizeof(struct ElementPoids));
car je suppose que 'I' est ainsi défini: ElementPoids* I;
Bon courage.
Ange Angelique
Messages postés
43
Date d'inscription
dimanche 24 août 2008
Statut
Membre
Dernière intervention
18 janvier 2012
4
12 mai 2009 à 20:56
12 mai 2009 à 20:56
Merci Loupius,
Désolée, je viens de lire ton message, je croyai que dès que je reçois un message ici j'ai une alerte sur ma boite, mais je crois que cette option est désactivée, quoi qu'il en soit, pour cette erreur c bon, ça a marché, merci
mais bon, la, jai un nouveau problème, il me casse vraiment la tête, je sais pas si je dois le redéfinir sur un nouveau message parce que c'est la même application mais pas le même problème,
bon je la pose comeme ici, a defaut de reponses je postule ailleurs:
Je ne comprend pas ou est le problème;
mon programme affecte un caractére a chaque noeud d'un arbre, si c'est un fils gauche il lui affecte un '0' si c'est le droit un '1'
le problème c'est que dès que je veux qu'il m'affiche ce qu'il a ffecté il me renvoie pas le meme code affecté lors du traitement, je trouve pas l'erreur, je l'ai meme déroulé manuellement, RIEN
svp aidez moi.
fonction qui affecte les caractéres:
// parcours de l'arbre en infixé et ajouter le code
void affich_infixe_croissant(ElementPoids *a)
{
if(a!=NULL)
{
affich_infixe_croissant(a->FilsDroit);
affich_infixe_croissant(a->FilsGauche);
if (a->FilsDroit!=NULL) { strcpy(a->FilsDroit->Code,"0");
printf("cest le fils droit \n\n");
printf(" -> Fils gauche %d ", a->FilsDroit->Num);
printf(" -> Code %s ", a->FilsDroit->Code);
}
if (a->FilsGauche!=NULL) {strcpy(a->FilsGauche->Code,"1");
printf("cest le fils gauche \n\n");
printf(" -> Fils droit %d ", a->FilsGauche->Num);
printf(" -> Code %s ", a->FilsGauche->Code);
}
}
}
// fonction 1 qui affiche l'arbre avec ses codes
// parcours de l'arbre en pretfixé et affichage de l'arbre
void affich_arbre(ElementPoids *a, int profondeur)
{
int i;
if(a!=NULL)
{
affich_arbre(a->FilsDroit, profondeur+1);
for(i=0;i<profondeur;i++)
printf("\t");
printf("%d %s\n",a->Num, a->Code);
affich_arbre(a->FilsGauche, profondeur+1);
}
}
// fonction2 qui affiche l'arbre
void affich_infixe_croissant2(ElementPoids *a)
{
if(a!=NULL)
{
affich_infixe_croissant2(a->FilsDroit);
affich_infixe_croissant2(a->FilsGauche);
if (a->FilsDroit!=NULL) { printf("cest le fils droit \n\n");printf(" -> Fils gauche %d ", a->FilsDroit->Num);printf(" -> Code %s ", a->FilsDroit->Code);}
if (a->FilsGauche!=NULL) {printf("cest le fils gauche \n\n");printf(" -> Fils droit %d ", a->FilsGauche->Num);printf(" -> Code %s ", a->FilsGauche->Code);}
}
}
pour les resultats, dans la fonction qui affecte les codes j'ai dans tous les fils droits des 1 et gauches des 0, mais dans les fonction d'affichage j'ai les memes valeurs de noeuds que le premiere fontion (parce que elle aussi fait de laffichage) mais des codes different.
je trouve pas l'erreur
encore merci
Désolée, je viens de lire ton message, je croyai que dès que je reçois un message ici j'ai une alerte sur ma boite, mais je crois que cette option est désactivée, quoi qu'il en soit, pour cette erreur c bon, ça a marché, merci
mais bon, la, jai un nouveau problème, il me casse vraiment la tête, je sais pas si je dois le redéfinir sur un nouveau message parce que c'est la même application mais pas le même problème,
bon je la pose comeme ici, a defaut de reponses je postule ailleurs:
Je ne comprend pas ou est le problème;
mon programme affecte un caractére a chaque noeud d'un arbre, si c'est un fils gauche il lui affecte un '0' si c'est le droit un '1'
le problème c'est que dès que je veux qu'il m'affiche ce qu'il a ffecté il me renvoie pas le meme code affecté lors du traitement, je trouve pas l'erreur, je l'ai meme déroulé manuellement, RIEN
svp aidez moi.
fonction qui affecte les caractéres:
// parcours de l'arbre en infixé et ajouter le code
void affich_infixe_croissant(ElementPoids *a)
{
if(a!=NULL)
{
affich_infixe_croissant(a->FilsDroit);
affich_infixe_croissant(a->FilsGauche);
if (a->FilsDroit!=NULL) { strcpy(a->FilsDroit->Code,"0");
printf("cest le fils droit \n\n");
printf(" -> Fils gauche %d ", a->FilsDroit->Num);
printf(" -> Code %s ", a->FilsDroit->Code);
}
if (a->FilsGauche!=NULL) {strcpy(a->FilsGauche->Code,"1");
printf("cest le fils gauche \n\n");
printf(" -> Fils droit %d ", a->FilsGauche->Num);
printf(" -> Code %s ", a->FilsGauche->Code);
}
}
}
// fonction 1 qui affiche l'arbre avec ses codes
// parcours de l'arbre en pretfixé et affichage de l'arbre
void affich_arbre(ElementPoids *a, int profondeur)
{
int i;
if(a!=NULL)
{
affich_arbre(a->FilsDroit, profondeur+1);
for(i=0;i<profondeur;i++)
printf("\t");
printf("%d %s\n",a->Num, a->Code);
affich_arbre(a->FilsGauche, profondeur+1);
}
}
// fonction2 qui affiche l'arbre
void affich_infixe_croissant2(ElementPoids *a)
{
if(a!=NULL)
{
affich_infixe_croissant2(a->FilsDroit);
affich_infixe_croissant2(a->FilsGauche);
if (a->FilsDroit!=NULL) { printf("cest le fils droit \n\n");printf(" -> Fils gauche %d ", a->FilsDroit->Num);printf(" -> Code %s ", a->FilsDroit->Code);}
if (a->FilsGauche!=NULL) {printf("cest le fils gauche \n\n");printf(" -> Fils droit %d ", a->FilsGauche->Num);printf(" -> Code %s ", a->FilsGauche->Code);}
}
}
pour les resultats, dans la fonction qui affecte les codes j'ai dans tous les fils droits des 1 et gauches des 0, mais dans les fonction d'affichage j'ai les memes valeurs de noeuds que le premiere fontion (parce que elle aussi fait de laffichage) mais des codes different.
je trouve pas l'erreur
encore merci
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 817
12 mai 2009 à 21:33
12 mai 2009 à 21:33
Salut,
As-tu pensé à inclure stdlib.h ?
As-tu pensé à inclure stdlib.h ?
Ange Angelique
Messages postés
43
Date d'inscription
dimanche 24 août 2008
Statut
Membre
Dernière intervention
18 janvier 2012
4
12 mai 2009 à 22:02
12 mai 2009 à 22:02
OUI, c'est inclus
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Ange Angelique
Messages postés
43
Date d'inscription
dimanche 24 août 2008
Statut
Membre
Dernière intervention
18 janvier 2012
4
12 mai 2009 à 22:25
12 mai 2009 à 22:25
pour plus de precision voici les resulatats, je comprends vraiement pas, les memes instructions dans 2 fonctions differentes avec les mes param dentrée donnent deux resultats differents, ou est le problèèèèèèèème, je craque:
par exemple si jappel
affich_infixe_croissant(racine) jai fils gauche 0 fils droit 1
après quand jappel affich_infixe_croissant2(racine) avec la meme racine jai fils gauche 1 fils droit 1
et quand jappel affich_arbre(racine) toujours la meme racine j'ai
fils droit 1
racine
fils gauche 1
or normalement je devrai avoir (comme dans affich_infixe_croissant'racine)):
fils droit 1
racine
fils gauche 0
par exemple si jappel
affich_infixe_croissant(racine) jai fils gauche 0 fils droit 1
après quand jappel affich_infixe_croissant2(racine) avec la meme racine jai fils gauche 1 fils droit 1
et quand jappel affich_arbre(racine) toujours la meme racine j'ai
fils droit 1
racine
fils gauche 1
or normalement je devrai avoir (comme dans affich_infixe_croissant'racine)):
fils droit 1
racine
fils gauche 0
12 mai 2009 à 21:28
void* malloc (int taille)
Telle est la définition de la fonction 'malloc'.
Et le void* est converti implicitement vers le bon type. Tel est l'intérêt de l'apparition du void* au profit de char*.
Donc ce n'est pas une erreur :D. A moins d'utiliser un compilateur K&R Mais ça ne court pas les rues. ^^