diff --git a/Labgen/labgen.c b/Labgen/labgen.c index d1c86b1166504eab4f08ef119de0e5ab8d7c2ff1..a952bdd1828ed907498a47245a6bb8a7e9c37626 100644 --- a/Labgen/labgen.c +++ b/Labgen/labgen.c @@ -1,22 +1,26 @@ #include "labgen.h" -point size; -//char *** matrice=NULL ; +point size; +char *** matrice = NULL ; int in,out; variables listevars; + +/* Crée un nouveau point de coordonnées (x,y) */ point new_point(int x, int y) { -point monpoint; -monpoint.x =x; -monpoint.y=y; -return monpoint; + point monpoint; + monpoint.x = x; + monpoint.y = y; + return monpoint; } -char*** create_matrice(int s1, int s2) + +/* Crée une matrice de taille (s1, s2) */ +void create_matrice(int s1, int s2) { int i,j; - char*** matrice = malloc(s1*sizeof(char **)); - + matrice = malloc(s1*sizeof(char **)); + for (i= 0; i<s1 ;i++){ matrice[i] = malloc(s2 * sizeof(char *)); for (j=0; j<s2; j++) @@ -26,89 +30,110 @@ char*** create_matrice(int s1, int s2) } } size = new_point(s1,s2); - in =0; + in = 0; out = 0; -return matrice; } -char* lecture(point p, char*** matrice) -{ +/* Renvoie la valeur de la matrice de coordonnées p */ +char* lecture(point p) +{ if (p.x > 0 && p.y > 0 && p.x < size.x && p.y < size.y) { - return matrice[p.x][p.y]; + return matrice[p.x][p.y]; /* Définir la matrice avant ? */ } return NULL; } -//void stock_val -void change_val_matrice(point p, char * msg, char*** matrice) + +/* void stock_val */ +/* Change la valeur de la matrice de coordonnées p par la valeur msg */ +void change_val_matrice(point p, char * msg) { char * m1; if (p.x > 0 && p.y > 0 && p.x < size.x && p.y < size.y) { - m1 = malloc (strlen(msg)*sizeof(char)); + m1 = malloc(strlen(msg)*sizeof(char)); strcpy(m1,msg); - if (matrice[p.x][p.y] != NULL) - { - free (matrice[p.x][p.y]) ; - } + if (matrice[p.x][p.y] != NULL){ + free(matrice[p.x][p.y]) ; + } matrice[p.x][p.y] = m1; } } -int * find_var (char* var) -{ -int i; -int ret; -for (i=0; i<listevars.last; i++) -{ -ret = strcmp(listevars.ident[i], var); -if (ret==0) +void init_listevars(){ + listevars.last = 0; +} + + +/* Vérifie si var est dans listevars : + * - si oui, renvoie l'adresse correspondante + - sinon, renvoie NULL */ +int find_var (char* var) { -return &listevars.val[i]; -}} -return NULL; + int i; + int ret; + for (i=0; i<listevars.last; i++) { + ret = strcmp(listevars.ident[i], var); + if (ret==0) { + return i; + } + } + return -1; } + +/* Modifie la valeur de la variable : + * - Si "nom" fait partie de la liste des variables, alors la variable est + * directement modifiée + * - Sinon rajoute le nom de la variable et sa valeur dans listevars + si la taille de listevars le permet */ void create_modif_var(char* nom, int val) { -int * res = find_var(nom); +int index = find_var(nom); -if (res != NULL) +if (index != -1) { -*res = val; + listevars.val[index] = val; } else{ if (listevars.last > TAILLE) { - printf(" il n ya plus de place pour tous ces variables\n"); + printf(" il n'y a plus de place pour tous ces variables\n"); exit(1); - } + } else listevars.ident[listevars.last] = malloc(strlen(nom)*sizeof(char)); strcpy(listevars.ident[listevars.last],nom); - listevars.val[listevars.last] = val; + listevars.val[listevars.last] = val; listevars.last++; }} -void affichmat(char *** matrice){ -int i,j; -for(i=0;i<size.x;i++){ -for(j=0;j<size.y;j++){ - printf("|%s \t",matrice[i][j]); -}printf("\n");} -} -/* -int main () -{ -create_matrice(5,4); -point p1 = new_point(1,2); -change_val_matrice(p1, "ABC"); -printf("%s\n", lecture(p1)); -change_val_matrice(p1, "DEF"); -printf("%s\n", lecture(p1)); + +int main () { + create_matrice(5,4); + + point p1 = new_point(1,2); + change_val_matrice(p1, "ABC"); + printf("%s\n", lecture(p1)); + + change_val_matrice(p1, "DEF"); + printf("%s\n", lecture(p1)); + + init_listevars(); + create_modif_var("IDENT",1); + create_modif_var("IDENT",2); + create_modif_var("IDENT",1); + create_modif_var("IDENT2",5); + printf("Taille : %d\n",listevars.last); + printf("Premier nom : %s\n",listevars.ident[0]); + printf("Première valeur : %d\n",listevars.val[0]); + printf("Deuxième nom : %s\n",listevars.ident[1]); + printf("Deuxième valeur : %d\n",listevars.val[1]); + + + return 0; } -*/