begin process at 2010 02 10 06:12:37
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Base de données

 > 

Autre

 > 

Arbre et dictionnaire


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

Arbre et dictionnaire

jeudi 14 février 2008 à 22:50:27 | Arbre et dictionnaire

Hugo Dam

Bonsoir,

J'ai un projet en langage C, dans lequel il me faut créer un arbre contenant les mots d'un dictionnaire contenu dans un fichier texte. J'arrive bien à extraire les mots du fichier txt, mais j'ai un probléme avec la constitution de l'arbre

Voila la structure des sommets :

/Définition de la structure de donnée de l'arbre

typedef struct Sommet{
  char lettre;
  char *mot;
  char *attrib;
  struct Sommet* a;
  struct Sommet* b;
  struct Sommet* c;
  struct Sommet* d;
  struct Sommet* e;
  struct Sommet* f;
  struct Sommet* g;
  struct Sommet* h;
  struct Sommet* i;
  struct Sommet* j;
  struct Sommet* k;
  struct Sommet* l;
  struct Sommet* m;
  struct Sommet* n;
  struct Sommet* o;
  struct Sommet* p;
  struct Sommet *q;
  struct Sommet *r;
  struct Sommet *s;
  struct Sommet *t;
  struct Sommet *u;
  struct Sommet *v;
  struct Sommet *w;
  struct Sommet *x;
  struct Sommet *y;
  struct Sommet *z;
  struct Sommet *e_a_g; //e_accent_grave
  struct Sommet *e_a_a; //e_accent_aigu
  struct Sommet *e_a_c; //e_accent_circonflexe
  struct Sommet *a_a_g;
  struct Sommet *a_a_c;
  struct Sommet *i_a_c;
  struct Sommet *o_a_c;
  struct Sommet *u_a_g;
  struct Sommet *u_a_c;
  struct Sommet *c_c;   //c_cedille
}Sommet,*Arbre;
Sujet


Et ensuite le programme principale :
int main()
{
    //Déclaration des variables utilisées dans le programme
    char path[20];
    FILE *readinput;
    char mot[100];
    char bv[100];
    char tgn[100];
    char dico[200];
    long taille,cpt;
    char temp;
    char tps[4];
   
    //Arbre contenant le dictionnaire
    Arbre abr;
    Arbre arbre;
    abr=(Sommet*)malloc(sizeof(Sommet));
    arbre=abr;
   

   
    //Définition de la table de hachage
    str_hash table[3000];
   
    //Programme principal
   
    printf("***************Projet SDD***************\n");
    path_dico(path);
    puts(path);
    readinput=fopen(path,"r"); // Ouverture du fichier texte contenant le dictionnaire
   

  
   //Ajout des mots dans l'arbre
    printf("Chargement du dictionnaire...\n");
   
    while(!feof(readinput))
    {  
    fscanf(readinput,"%s\t%s\t%s\n",mot,bv,tgn);
    taille=strlen(mot);//Taille du mot à entrer
    abr=arbre;
    for(cpt=0;cpt<taille;cpt++)
    {
                               switch(mot[cpt])
                               {
                               case 'a':
                                    if(abr->a==NULL) //Si le sous arbre de la lettre n'existe pas on le crée
                                    {
                                    abr->a=(Sommet*)malloc(sizeof(Sommet));
                                    abr=abr->a;
                                    abr->lettre='a'; //On met la lettre corespondante
                                    }
                                    else{
                                         abr=abr->a; //Si il existe, on met la lettre dans le champ 'lettre'
                                         abr->lettre='a';
                                    }
                                    break;
                                    
                           default:
                              break;
}
}

Il n'ya pas d'erreur à la compilation, mais lors de l'exécution. Windows me renvoie une erreur !
Ici, il n'y a que la lettre a de définis, il reste tout les autres lettres de  l'aphabet.
Est ce qu'il aurait une erreur qui saute au yeux que je n'aurais pas vu ?
Merci d'avance !

vendredi 15 février 2008 à 00:45:51 | Re : Arbre et dictionnaire

juju12

Réponse acceptée !
Quand tu crées une structure Sommet, ses membres ne sont pas initialisés; en particulier les pointeurs ne valent généralement pas NULL; or quand tu charges ton mot tu testes if(abr->a==NULL) ce qui renverra faux alors que la mémoire n'a pas été allouée : pour corriger ce problème crées une fonction initialisant les membres de la structure, ou utilises ZeroMemory()


Cette discussion est classée dans : arbre, char, struct, abr, sommet


Répondre à ce message

Sujets en rapport avec ce message

Lecture/Ecriture/Modification d'une structure dans un fichier [ par paniX ] Bonjour. Alors voici mon probleme:j'ai créé une structure client qui a cette forme :struct client{ int id; char nom[30]; char prenom[30]; char adresse struct [ par ready4 ] Je ne sais pas comment initialiser mes moteurs //intialisation moteursM1 = {2, 1, 1, 2, 0, 0, 120};M2 = {8, 4, 4, 8, 0, 0, 80};M3 = {32, 16, 16, 32, 0 Espace mémoire occupé par une structure [ par HCJarod ] Salut,j'ai un vague souvenir concernant les structures en C (struct) qui n'occupe pas la même place mémoire en fonction du sens de la déclaration. Ca envoi d'une structure dans un socket [ par Taum ] Bonjour, voilà j'ai besoin d'envoyer une structure dans un paquet udp :typedef struct { unsigned short TransactionId; short Flags; short Questions; sh supprimer un mot d'un arbre en C [ par toto000 ] Bonjour, J'ai un arbre ternaire de recherche et je voudrai supprimer un mot dans cet arbre.Voilà ce que j'ai fais mais ça ne marche pas pour tous les Structures C [ par nicolas66 ] Bonsoir tlm,j'ai un petit ennui avec la fonction C suivante :---------------------------------------------------------struct passwd *getpwnam (const c Conversion struct en char* [ par lastpixl ] Comment convertir une structure en char* ? C-à-d en fait comment avoir dans un char* le contenu de la struct, comme si on lisait un fichier dans leque [c] erreur malloc (incompatible types in assignment) [ par Diony ] voici mon programme : #include #include #include typedef struct recette { char * nom; struct ingredient * ing; 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 compression de huffman urgent svp [ par bundy_boy ] Bonjour voila, j'essai d'implémenter la compression de huffman dans un archiveur (qui lui fonctionne très bien), j'ai testé deux algorithmes de huffma


Nos sponsors


Sondage...

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

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