begin process at 2012 05 28 19:39:56
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Divers

 > 

Débutant(e)

 > 

[debutant]structure dans un arbre binaire/pointeur


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

[debutant]structure dans un arbre binaire/pointeur

dimanche 26 novembre 2006 à 16:19:46 | [debutant]structure dans un arbre binaire/pointeur

gluff

Bonjour,
je n'arrive pas a remplir des strucutures a partir de la lecture d'un fichier.
Dans le fichier sont contenus un liste de nom de personne et un numéros correspondant a leur génération (1,2,3, ect...), je voudrais rentré le nom dans le champ nom de la structure NOEUD et le numéros dans gen, mais j'y arrive pas...
Une cela fait il faudra que je crée des liens entre les différente structure et là je galère aussi.
Voici un bout de code si vous pouviez m'éclairer.
Merci d'avance.


cordialement GLUFF


//////////////////////////////////************************************//////////////////////////////////////////////
#include <stdio.h>
#include <stdlib.h>
#include<string.h>






typedef struct NOEUD
        {
            char *Nom;
            int *gen;
            struct NOEUD *pere;
            struct NOEUD *ptg;
            struct NOEUD *ptd;
        }NOEUD;



main()
  {
    FILE *pfichier;
    pfichier=fopen("arbre.txt","r");
    //il faut ouvrir le fichier ds la fct,c mieux
    char temp1;
    int temp2;
    int temp3;
    int i;
    struct NOEUD *pcour;
  
  
                    while(!feof(pfichier))
                  
                  
                    {
                   
              
                    fscanf(pfichier,"%s %d",&temp1,&temp2);
                                    
                
                    //on fait des enfants par generation ptg
                  NOEUD*ptg=NULL;
                  ptg= (NOEUD*)malloc(sizeof(NOEUD));
                  (pcour->Nom)=&temp1;
                  (pcour->gen)=&temp2;  
                    pcour->ptg=ptg;
                    pcour=ptg;
                    }

}
dimanche 26 novembre 2006 à 16:28:48 | Re : [debutant]structure dans un arbre binaire/pointeur

yann_lo_san

Tu passe un CHAR temp1 à sscanf("%s") %s est une chaine !
Tu n'alloues pas pCur->nom = &temp1 !!! (nom est un pointeur non alloué)

dimanche 26 novembre 2006 à 16:58:15 | Re : [debutant]structure dans un arbre binaire/pointeur

gluff

Merci je vois le probleme, mais je ne sais pas le résoudre . J'ai un probleme avec les structutres et les pointeurs (enfaite les pointeurs dans les structures je supporte pas)

du coup si je change ca  en passant les pointeur nom et gen directement en variable(voir ) , mais du coup *(pcour->Nom)=temp1;*(pcour->gen)=temp2; est faux ? (voir ;)


ou alors je peux essayé d'alloue nom en le laissant en pointeur : voir plus bas
NOEUD*Nom=NULL;
Nom= (char*)malloc(sizeof(char));
                
///////////////////////////////////************************************/////////////////////////////////////////////////////

#include <stdio.h>
#include <stdlib.h>
#include<string.h>






typedef struct NOEUD
        {
           char Nom[10];
            int gen;
            struct NOEUD *pere;
            struct NOEUD *ptg;
            struct NOEUD *ptd;
        }NOEUD;



main()
  {
    FILE *pfichier;
    pfichier=fopen("arbre.txt","r");
    //il faut ouvrir le fichier ds la fct,c mieux
    char temp1[10];
    int temp2;
    int temp3;
    int i;
    struct NOEUD *pcour;
  
  
                    while(!feof(pfichier))
                  
                  
                    {
                   
              
                    fscanf(pfichier,"%s %d",&temp1,&temp2);
                                    
                
                    //on fait des enfants par generation ptg
                  NOEUD*ptg=NULL;
                  ptg= (NOEUD*)malloc(sizeof(NOEUD));
                  *(pcour->Nom)=temp1;
                  *(pcour->gen)=temp2;  
                    pcour->ptg=ptg;
                    pcour=ptg;
                    }

}

///////////////////////////////////************************************/////////////////////////////////////////////////////
ou alors je peux essayé d'alloue nom en le laissant en pointeur :
typedef struct NOEUD
        {
            char *Nom;
            int *gen;
            struct NOEUD *pere;
            struct NOEUD *ptg;
            struct NOEUD *ptd;
        }NOEUD;



main()
  {
    FILE *pfichier;
    pfichier=fopen("arbre.txt","r");
    //il faut ouvrir le fichier ds la fct,c mieux
    char temp1[10];
    int temp2;
    int temp3;
    int i;
    struct NOEUD *pcour;
  
  
                    while(!feof(pfichier))
                  
                  
                    {
                   
              
                    fscanf(pfichier,"%s %d",&temp1,&temp2);
                                    
                
                    //on fait des enfants par generation ptg
                  NOEUD*ptg=NULL;
                  ptg= (NOEUD*)malloc(sizeof(NOEUD));
                  NOEUD*Nom=NULL;
                 Nom= (char*)malloc(sizeof(char));
                  (pcour->Nom)=&temp1;
                  (pcour->gen)=&temp2;  
                    pcour->ptg=ptg;
                    pcour=ptg;
                    }

}


Merci encore d'anvance

dimanche 26 novembre 2006 à 17:05:15 | Re : [debutant]structure dans un arbre binaire/pointeur

yann_lo_san

1 -  fscanf(pfichier,"%s %d",&temp1,&temp2); 
   &temp1 ne veut rien dire, c'est ou &temp1[0] OU temp1 le pointeur !

2 - Nom= (char*)malloc(sizeof(char)); un noeud n'est pas un char !
     Nom= (char*)malloc(sizeof(NOEUD));
     Nom->nom = (char*)malloc(10);

3 - on n'utilise pas = pour les chaines C
      strcpy(chaineSource, chaineDestination);

dimanche 26 novembre 2006 à 17:09:10 | Re : [debutant]structure dans un arbre binaire/pointeur

yann_lo_san


erreur pour moi : Nom= (NOEUD*)malloc(sizeof(NOEUD));
dimanche 26 novembre 2006 à 17:14:33 | Re : [debutant]structure dans un arbre binaire/pointeur

yann_lo_san


2 solutions :
si pointeur dans la structure (char* nom) on passe par un buffer pour la lecture dans fichier
puis on alloue avec la taille du buffer
pNoeud->nom = (char*)malloc(strlen(buffer)+1);
puis on copie;
strcpy(pNoeud->nom, buffer);

ou le nom est toujours de taille fixe dans la structure
#define TAILLE_NOM 32
struct
{
   char nom[TAILLE_NOM];
}
dimanche 26 novembre 2006 à 18:14:58 | Re : [debutant]structure dans un arbre binaire/pointeur

gluff

Merci je crois que ca marche enfin mais g un pb tout con de pauvre debutant :
quand je lance le programme la fenetre se ferme tout de suite et on a pas le temp de voir ce qui y est écrit...comment on fait?

reremerci d'avance
GLUFF

#include <stdio.h>
#include <stdlib.h>
#include<string.h>



typedef struct NOEUD
        {
            char *Nom;
            int *gen;
            struct NOEUD *pere;
            struct NOEUD *ptg;
            struct NOEUD *ptd;
        }NOEUD;



main()
  {
    FILE *pfichier;
    pfichier=fopen("arbre.txt","r");
    //il faut ouvrir le fichier ds la fct,c mieux
    char temp1[10];
    int temp2;
    int temp3;
    int i;
    NOEUD *pcour;
    pcour= (NOEUD*)malloc(sizeof(NOEUD));
    pcour->Nom = (char*)malloc(10);
    pcour->gen = (int*)malloc;
                    while(!feof(pfichier))               
                    {
                  
             
                    fscanf(pfichier,"%s %d",temp1,&temp2); // lecture dans fichier
                                   
               
                   
                  NOEUD*ptg=NULL;//on fait des enfants par generation ptg
                  ptg= (NOEUD*)malloc(sizeof(NOEUD));// reservation mémoire
                  NOEUD*Nom=NULL;
                  strcpy(pcour->Nom,temp1);
                  //remplissage des donné
                  (pcour->gen)=&temp2; 
                  printf("%s", pcour->Nom);
                    pcour->ptg=ptg;
                    pcour=ptg; // passage au noeud suivant
                    }
                 

}
dimanche 26 novembre 2006 à 18:18:32 | Re : [debutant]structure dans un arbre binaire/pointeur

yann_lo_san

System("pause");

dimanche 26 novembre 2006 à 18:47:54 | Re : [debutant]structure dans un arbre binaire/pointeur

gluff

J'ai peur d'etre chiant mais je comprend pas
j'ai rajouter:
System("pause");
et ca marchait pas alors aprés de recherche j'ai vu qu'il fallait iostream
alors
j'ai rajouter:
#include <iostream.h> ou #include <iostream>
System("pause");
et devc++ me dit qu'il trouve pas iostream...et je le trouve pas sur internet....
Merci
dimanche 26 novembre 2006 à 20:47:23 | Re : [debutant]structure dans un arbre binaire/pointeur

yann_lo_san

Quant tu installes un compilateur il faut parametrer des variables d'environnement pour qu'il puisse trouver les LIB, INCLUDE, ect...
Sinon il faudrait que tous les fichiers soient dans le rep courant !
Donc dans ton cas, il faut ajouter dans tes vars d'env. :
Set PATH=chemin vers compilateur
Set LIB=chemin vers lib
Set INCLUDE=chemin vers include

de plus le header vers system est plutot stdlib.h


1 2

Cette discussion est classée dans : structure, noeud, struct, ptg, pcour


Répondre à ce message

Sujets en rapport avec ce message

créer une liste à partir d'un arbre [ par morganistic ] bonjour a tous!voila deux structures : une liste et un arbre.je n arrive pas a parcourir un arbre en inserant chaque noeud de l arbre dans une liste.. PILE & STRUCTURE [ par cyberice67 ] Bonjour, J'ai une bonne question spécial chauffage de neurones.... J'ai créé une structure de base appelée MesDonnees, qui contient mes données. Puis Structure alignment [ par Gargagol ] Voilà je programme sous MS VC++J'ai la structure suivante:typedef struct{ unsigned short port; unsigned char showMessage; unsigned char hashMonitor[16 Liste Chainees, niveau debutant [ par Anysse ] Salut, alors voila, je code sous DevC++ 4.9.9.0C'est mon premier programme utilisant les Listes chainees, et je n 'arrive pas a comprendre pourquoi il Structure de données Arbre de Huffman [ par nicloss ] Bonjour, j'ai un projet en programmation c qui consiste à coder un programme qui compresse selon l'algorithme de Huffman. J'ai bien compris le princip Creation de STRCAT pour liste chainees [ par Anysse ] Salut j'ai fais une fonction qui est censee concatener deux listes chainees, mais apparemment, il doit y avoir un probleme de passage ar adresse, enfi Probleme structure XML [ par saturne_1606 ] Bonjour à tous!Voilà, j'essaie de programmer des structures en C pour gérer le XML.Voici mes structures :typedef struct{    char* name;    char* data; structure [ par logant83 ] bonjoir, enfaite voila j'aimerai pouvoir exploiter une structure mais voila j'i arrive pas. struct connect_nick { //ma structure char pseudo[1000 Définition de Structure [ par angelfire0808 ] Voila j'ai une petite question sur la definition des structure : struct liste         {         int valeur;     & Les arbres en C [ par nadias ] Bonsoir tout le monde,Je voudrai SVP etre corriger s'il y a erreur merci.On me demande de creer un arbre. Voici la consigne:"Cette arbre possède des n


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
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,484 sec (3)

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