Commit 36708b2264a1b1ba98957b3ab3e54c186a3e71b5

Authored by tvieuble
1 parent f512fab8

ajout projet0.c

Showing 2 changed files with 226 additions and 0 deletions   Show diff stats
projet0.c 0 → 100644
... ... @@ -0,0 +1,113 @@
  1 +#include <stdio.h>
  2 +#include <stdlib.h>
  3 +
  4 +#define A 27
  5 +
  6 +struct node {
  7 + char lettre;
  8 + struct cell* listeFils;
  9 +};
  10 +
  11 +struct cell {
  12 + struct node* arbre;
  13 + struct cell* arbreSuivant;
  14 +};
  15 +
  16 +void lien_listeFils(struct cell** pL) {
  17 + struct cell* p;
  18 + p = malloc(sizeof(struct cell));
  19 +
  20 + (*pL)->arbre->listeFils = p;
  21 +}
  22 +
  23 +void initialisation_tab_arbre(struct node tab[]) {
  24 + for(int i = 0; i < A-1; i++) {
  25 + tab[i].lettre = 97+i; //ajout lettres minuscules
  26 + tab[i].listeFils = NULL;
  27 + }
  28 + tab[A-1].lettre = 39;
  29 + tab[A-1].listeFils = NULL;
  30 +}
  31 +
  32 +void ajout_tete(char elem, struct cell** pL) {
  33 + struct cell* p;
  34 + p = malloc(sizeof(struct cell));
  35 + p->arbre = malloc(sizeof(struct node));
  36 + p->arbre->listeFils = NULL;
  37 + p->arbre->lettre = elem;
  38 + p->arbreSuivant = *pL;
  39 + *pL = p;
  40 +}
  41 +
  42 +struct cell ** insertion(char elem, struct cell** pL) {
  43 + if(((*pL) == NULL) || ((*pL)->arbre->lettre > elem)) {
  44 + ajout_tete(elem, pL);
  45 + return &(*pL)->arbre->listeFils;
  46 + }
  47 + else if((*pL)->arbre->lettre == elem) {
  48 + return &(*pL)->arbre->listeFils;
  49 + }
  50 + else {
  51 + return insertion(elem, &(*pL)->arbreSuivant);
  52 + }
  53 +}
  54 +
  55 +
  56 +void lire_fichier(FILE* fd, struct node tab_arbre_prcp[]) {
  57 +
  58 + printf("lirefichier\n");
  59 + struct cell** localisationArbre;
  60 + char motLu[50];
  61 + while(fscanf(fd, "%s", motLu)==1) {
  62 + int i = 0;
  63 + if((motLu[0] >= 'a') && (motLu[0] <= 'z')) {
  64 + localisationArbre = &tab_arbre_prcp[motLu[0]-97].listeFils;
  65 + }
  66 +
  67 + if(motLu[0] == 39) {
  68 + localisationArbre = &tab_arbre_prcp[A].listeFils; //A = derniere case du tab
  69 + }
  70 + while(motLu[i] != '\0') {
  71 +
  72 + i += 1;
  73 + printf("lettre lue : %c address : %p\n", motLu[i], localisationArbre);
  74 + localisationArbre = insertion(motLu[i], localisationArbre);
  75 + printf("tab_arbre[%d].listeFils : %p\n",i, tab_arbre_prcp[i].listeFils);
  76 + /*printf("localisationArbre.lettre : %c\n", (*localisationArbre)->arbre->lettre);
  77 + printf("localisation apres : %p\n", localisationArbre);*/
  78 + printf("\n");
  79 + }
  80 + }
  81 + printf("\n");
  82 + fclose(fd);
  83 +
  84 + printf("fin lire fichier\n");
  85 +
  86 +}
  87 +
  88 +
  89 +int main(int argc, char* argv[]) {
  90 + FILE* fd;
  91 + struct node tab_arbre[A];
  92 +
  93 + if(argc>1) fd = fopen(argv[1], "r");
  94 + else fd = NULL;
  95 + if (fd == NULL) {
  96 + printf("Error : couldn't open file\n");
  97 + return 1;
  98 + }
  99 + printf("avant init tab_arbre[1] %c\n", tab_arbre[1].lettre);
  100 + printf("fd : %p\n", fd);
  101 + initialisation_tab_arbre(tab_arbre);
  102 + printf("apres init tab_arbre[1] %c\n", tab_arbre[1].lettre);
  103 + printf("fd apres init : %p\n", fd);
  104 + printf("avant lire fichier\n");
  105 + lire_fichier(fd, tab_arbre);
  106 + printf("tab_arbre[0].lettre : %c\n", tab_arbre[0].lettre);
  107 + printf("tab_arbre[0].listeFils : %p\n", tab_arbre[0].listeFils);
  108 + printf("tab_arbre[0].listeFils->arbre : %p\n", tab_arbre[0].listeFils->arbre);
  109 + printf("tab_arbre[1].listeFils->arbre->lettre : %c\n", tab_arbre[0].listeFils->arbre->lettre);
  110 + printf("tab_arbre[0].listeFils->arbre->listeFils->arbre->lettre : %c\n", tab_arbre[0].listeFils->arbre->listeFils->arbre->lettre);
  111 + printf("tab_arbre[0].listeFils->arbre->listeFils->arbre->listeFils->arbre->lettre : %c\n", tab_arbre[0].listeFils->arbre->listeFils->arbre->listeFils->arbre->lettre);
  112 + return 0;
  113 +}
... ...
projet0segfault.c 0 → 100644
... ... @@ -0,0 +1,113 @@
  1 +#include <stdio.h>
  2 +#include <stdlib.h>
  3 +
  4 +#define A 27
  5 +
  6 +struct node {
  7 + char lettre;
  8 + struct cell* listeFils;
  9 +};
  10 +
  11 +struct cell {
  12 + struct node* arbre;
  13 + struct cell* arbreSuivant;
  14 +};
  15 +
  16 +void lien_listeFils(struct cell** pL) {
  17 + struct cell* p;
  18 + p = malloc(sizeof(struct cell));
  19 +
  20 + (*pL)->arbre->listeFils = p;
  21 +}
  22 +
  23 +void initialisation_tab_arbre(struct node tab[]) {
  24 + for(int i = 0; i < A-1; i++) {
  25 + tab[i].lettre = 97+i; //ajout lettres minuscules
  26 + tab[i].listeFils = NULL;
  27 + }
  28 + tab[A-1].lettre = 39;
  29 + tab[A-1].listeFils = NULL;
  30 +}
  31 +
  32 +void ajout_tete(char elem, struct cell** pL) {
  33 + struct cell* p;
  34 + p = malloc(sizeof(struct cell));
  35 + p->arbre = malloc(sizeof(struct node));
  36 + p->arbre->listeFils = NULL;
  37 + p->arbre->lettre = elem;
  38 + p->arbreSuivant = *pL;
  39 + *pL = p;
  40 +}
  41 +
  42 +struct cell ** insertion(char elem, struct cell** pL) {
  43 + if(((*pL) == NULL) || ((*pL)->arbre->lettre > elem)) {
  44 + ajout_tete(elem, pL);
  45 + return &(*pL)->arbre->listeFils;
  46 + }
  47 + else if((*pL)->arbre->lettre == elem) {
  48 + return &(*pL)->arbre->listeFils;
  49 + }
  50 + else {
  51 + return insertion(elem, &(*pL)->arbreSuivant);
  52 + }
  53 +}
  54 +
  55 +
  56 +void lire_fichier(FILE* fd, struct node tab_arbre_prcp[]) {
  57 +
  58 + printf("lirefichier\n");
  59 + struct cell** localisationArbre;
  60 + char motLu[50];
  61 + while(fscanf(fd, "%s", motLu)==1) {
  62 + int i = 0;
  63 + if((motLu[0] >= 'a') && (motLu[0] <= 'z')) {
  64 + localisationArbre = &tab_arbre_prcp[motLu[0]-97].listeFils;
  65 + }
  66 +
  67 + if(motLu[0] == 39) {
  68 + localisationArbre = &tab_arbre_prcp[A].listeFils; //A = derniere case du tab
  69 + }
  70 + while(motLu[i] != '\0') {
  71 +
  72 + i += 1;
  73 + printf("lettre lue : %c address : %p\n", motLu[i], localisationArbre);
  74 + localisationArbre = insertion(motLu[i], localisationArbre);
  75 + printf("tab_arbre[%d].listeFils : %p\n",i, tab_arbre_prcp[i].listeFils);
  76 + /*printf("localisationArbre.lettre : %c\n", (*localisationArbre)->arbre->lettre);
  77 + printf("localisation apres : %p\n", localisationArbre);*/
  78 + printf("\n");
  79 + }
  80 + }
  81 + printf("\n");
  82 + fclose(fd);
  83 +
  84 + printf("fin lire fichier\n");
  85 +
  86 +}
  87 +
  88 +
  89 +int main(int argc, char* argv[]) {
  90 + FILE* fd;
  91 + struct node tab_arbre[A];
  92 +
  93 + if(argc>1) fd = fopen(argv[1], "r");
  94 + else fd = NULL;
  95 + if (fd == NULL) {
  96 + printf("Error : couldn't open file\n");
  97 + return 1;
  98 + }
  99 + printf("avant init tab_arbre[1] %c\n", tab_arbre[1].lettre);
  100 + printf("fd : %p\n", fd);
  101 + initialisation_tab_arbre(tab_arbre);
  102 + printf("apres init tab_arbre[1] %c\n", tab_arbre[1].lettre);
  103 + printf("fd apres init : %p\n", fd);
  104 + printf("avant lire fichier\n");
  105 + lire_fichier(fd, tab_arbre);
  106 + printf("tab_arbre[0].lettre : %c\n", tab_arbre[0].lettre);
  107 + printf("tab_arbre[0].listeFils : %p\n", tab_arbre[0].listeFils);
  108 + printf("tab_arbre[0].listeFils->arbre : %p\n", tab_arbre[0].listeFils->arbre);
  109 + printf("tab_arbre[1].listeFils->arbre->lettre : %c\n", tab_arbre[0].listeFils->arbre->lettre);
  110 + printf("tab_arbre[0].listeFils->arbre->listeFils->arbre->lettre : %c\n", tab_arbre[0].listeFils->arbre->listeFils->arbre->lettre);
  111 + printf("tab_arbre[0].listeFils->arbre->listeFils->arbre->listeFils->arbre->lettre : %c\n", tab_arbre[0].listeFils->arbre->listeFils->arbre->listeFils->arbre->lettre);
  112 + return 0;
  113 +}
... ...