From 23616dc27e2524e1c43ff104ca731d454bca99f1 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?H=C3=A9l=C3=A8ne=20TRAN?= <helene.tran@ensiie.fr>
Date: Tue, 26 Dec 2017 19:12:50 +0100
Subject: [PATCH] Rajout fichier labgen.c

---
 Labgen/labgen.c | 135 ++++++++++++++++++++++++++++--------------------
 1 file changed, 80 insertions(+), 55 deletions(-)

diff --git a/Labgen/labgen.c b/Labgen/labgen.c
index d1c86b1..a952bdd 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;
 }
-*/
-- 
GitLab