diff --git a/bancomat.scala b/GSEM/bancomat.scala
similarity index 100%
rename from bancomat.scala
rename to GSEM/bancomat.scala
diff --git a/bancomat2.scala b/GSEM/bancomat2.scala
similarity index 99%
rename from bancomat2.scala
rename to GSEM/bancomat2.scala
index 562a1c5815806177e9e82c808951291dc3ec6d64..5c30ac8e55d61999aa084830c697255d94d8069a 100644
--- a/bancomat2.scala
+++ b/GSEM/bancomat2.scala
@@ -2,7 +2,7 @@ import scala.io.StdIn._
 object Main{
   def main(args: Array[String]): Unit = {
     var pincorrect = Array("a","b","c","d","e")
-    var pin=""
+    var pin= ""
     var continuer = true 
 	var montantinitial = 1200.0
 		
diff --git a/examen_1_dec_2022.pdf b/examen_1_dec_2022.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..5cfcbf47c83bb209ec1e5c72bd24b948983a2478
Binary files /dev/null and b/examen_1_dec_2022.pdf differ
diff --git a/myTP/TP1/exercice4.c b/myTP/TP1/exercice4.c
index feb491ec7dc039dbfcd228367693fdc678e95de3..9edb097d9f70ce8405941836801244360b96dbed 100644
--- a/myTP/TP1/exercice4.c
+++ b/myTP/TP1/exercice4.c
@@ -17,5 +17,4 @@ int main(){
    printf("\nvaleurs apres a :%d",a);
    printf("\nvaleurs apres b :%d",b);
 
-
 }
\ No newline at end of file
diff --git a/myTP/exos/dilatation b/myTP/exos/dilatation
new file mode 100755
index 0000000000000000000000000000000000000000..530ca58961a87551ba485d2a87f37631e43bdae1
Binary files /dev/null and b/myTP/exos/dilatation differ
diff --git a/myTP/exos/dilatation.c b/myTP/exos/dilatation.c
index aadf6f6957c52d06a5a1415c8e08c9a6c900a287..98ddd150a883253469299d99bac1360dc3c072ea 100644
--- a/myTP/exos/dilatation.c
+++ b/myTP/exos/dilatation.c
@@ -12,43 +12,41 @@ int get_max(int n, const int* tab) {
 }
 
 int **dilatation(int m, int n, const int** tab) {
-    int **res = (int**) malloc(m * sizeof(int*));
+    int **res = malloc(m * sizeof(int*));
     for (int i = 0; i < m; i++) {
-        res[i] = (int*) malloc(n * sizeof(int));
+        res[i] = malloc(n * sizeof(int));
         for (int j = 0; j < n; j++) {
             int max[5];
-            int k = 0;
+            int k = 0;  // Start k from 1
 
             max[k] = tab[i][j];
             k += 1;
 
             if (i > 0) {
-                max[k++] = tab[i-1][j];
+                max[k++] = tab[i - 1][j];  // Use tab[i-1][j] for the top element
             }
 
-            if (i < m-1) {
-                max[k++] = tab[i+1][j];
+            if (i < m - 1) {
+                max[k++] = tab[i + 1][j];  // Use tab[i+1][j] for the bottom element
             }
 
             if (j > 0) {
-                max[k++] = tab[i][j-1];
+                max[k++] = tab[i][j - 1];  // Use tab[i][j-1] for the left element
             }
 
-            if (j < n-1) {
-                max[k++] = tab[i][j+1];
+            if (j < n - 1) {
+                max[k++] = tab[i][j + 1];  // Use tab[i][j+1] for the right element
             }
-            
+
             res[i][j] = get_max(k, max);
         }
     }
-    return res;
+    return res;  // Do not free(res) here
 }
 
 void print_tab(int m, int n, const int** tab) {
     for (int i = 0; i < m; i++) {
-        for (int j = 0; j < n; j++)
-        {
-            int debug = tab[i][j];
+        for (int j = 0; j < n; j++) {
             printf("%d ", tab[i][j]);
         }
         printf("\n");
@@ -57,22 +55,18 @@ void print_tab(int m, int n, const int** tab) {
 }
 
 int **init_array(int m, int n) {
-    int **res = (int**) malloc(m * sizeof(int*));
+    int **res = malloc(m * sizeof(int*));
     int k = 1;
-    for (int i = 0; i < m; i++)
-    {
-        res[i] = (int*) malloc(n * sizeof(int));
-        for (int j = 0; j < n; j++)
-        {
+    for (int i = 0; i < m; i++) {
+        res[i] = malloc(n * sizeof(int));
+        for (int j = 0; j < n; j++) {
             res[i][j] = k++;
         }
     }
-    return res;
-    
+    return res;  // Do not free(res) here
 }
 
 int main() {
-    
     int m = 5, n = 5;
     int **tab = init_array(m, n);
 
@@ -80,5 +74,15 @@ int main() {
 
     int** res = dilatation(m, n, (const int **)tab);
 
-    print_tab(m, n, (const int**) res);
+    print_tab(m, n, (const int**)res);
+
+    // Free memory
+    for (int i = 0; i < m; i++) {
+        free(tab[i]);
+        free(res[i]);
+    }
+    free(tab);
+    free(res);
+
+    return 0;
 }