diff --git a/source_codes/Makefile b/source_codes/Makefile
new file mode 100644
index 0000000000000000000000000000000000000000..0ff2c06b38756c6257190905e47bd88ba96cce3f
--- /dev/null
+++ b/source_codes/Makefile
@@ -0,0 +1,9 @@
+TOPTARGETS := all clean
+
+SUBDIRS := $(wildcard */.)
+
+$(TOPTARGETS): $(SUBDIRS)
+$(SUBDIRS):
+	$(MAKE) -C $@ $(MAKECMDGOALS)
+
+.PHONY: $(TOPTARGETS) $(SUBDIRS)
diff --git a/source_codes/loops_tests/.gitignore b/source_codes/loops_tests/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..0a63c70f19ad8d2da7572535b0867a0f8c951bac
--- /dev/null
+++ b/source_codes/loops_tests/.gitignore
@@ -0,0 +1,5 @@
+factorielle
+ppcm_bis
+nb1er
+pgcd
+ppcm
diff --git a/source_codes/loops_tests/Makefile b/source_codes/loops_tests/Makefile
new file mode 100644
index 0000000000000000000000000000000000000000..75f84c991b55660d30b00240129d0619b773b634
--- /dev/null
+++ b/source_codes/loops_tests/Makefile
@@ -0,0 +1,18 @@
+CC:=gcc
+SAN:=-fsanitize=address
+CFLAGS:=-Wall -Wextra -pedantic -g $(SAN)
+LDFLAGS:=-lm $(SAN)
+
+EXECS := $(shell find . -type f -iname '*.c' | sed 's/\.c//g')
+
+all: $(EXECS)
+
+$(EXECS): %: %.c
+	$(CC) $(CFLAGS) -o $@ $< $(LDFLAGS)
+	@echo $@ >> .gitignore
+
+.PHONY: clean all
+
+clean:
+	rm -f *.o $(EXECS) .gitignore
+
diff --git a/source_codes/pointeurs/.gitignore b/source_codes/pointeurs/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..7bf15f4ab3ca13512819187a45277f86dc8854ec
--- /dev/null
+++ b/source_codes/pointeurs/.gitignore
@@ -0,0 +1 @@
+string_deep_shallow_copy
diff --git a/source_codes/pointeurs/Makefile b/source_codes/pointeurs/Makefile
new file mode 100644
index 0000000000000000000000000000000000000000..75f84c991b55660d30b00240129d0619b773b634
--- /dev/null
+++ b/source_codes/pointeurs/Makefile
@@ -0,0 +1,18 @@
+CC:=gcc
+SAN:=-fsanitize=address
+CFLAGS:=-Wall -Wextra -pedantic -g $(SAN)
+LDFLAGS:=-lm $(SAN)
+
+EXECS := $(shell find . -type f -iname '*.c' | sed 's/\.c//g')
+
+all: $(EXECS)
+
+$(EXECS): %: %.c
+	$(CC) $(CFLAGS) -o $@ $< $(LDFLAGS)
+	@echo $@ >> .gitignore
+
+.PHONY: clean all
+
+clean:
+	rm -f *.o $(EXECS) .gitignore
+
diff --git a/source_codes/pointeurs/string_deep_shallow_copy.c b/source_codes/pointeurs/string_deep_shallow_copy.c
index 588cb715660414153055ddb01500130a005d2f57..280969fe035c0cf1c9179651a3933c7900d8afc2 100644
--- a/source_codes/pointeurs/string_deep_shallow_copy.c
+++ b/source_codes/pointeurs/string_deep_shallow_copy.c
@@ -2,71 +2,65 @@
 #include <stdlib.h>
 
 typedef struct _chaine {
-   char* str;
-   int len;
+    char *str;
+    int len;
 } chaine;
 
-int length(char* phrase) {
-   if (NULL == phrase) return -1;;
-   int len = 0;
-   while (0 != phrase[len]) {
-      len++;
-   }
-   return len;
+int length(char *phrase) {
+    if (NULL == phrase) {
+        return -1;
+    }
+    int len = 0;
+    while (0 != phrase[len]) {
+        len++;
+    }
+    return len;
 }
 
-chaine chaine_build(char* phrase) {
-   chaine ch;
-   ch.len = length(phrase);
-   ch.str = malloc((ch.len+1)*sizeof(char));
-   for (int i=0;i<ch.len;i++) {
-      ch.str[i] = phrase[i];
-   }
-   return ch;
+chaine chaine_build(char *phrase) {
+    chaine ch;
+    ch.len = length(phrase);
+    ch.str = malloc((ch.len + 1) * sizeof(char));
+    for (int i = 0; i < ch.len; i++) {
+        ch.str[i] = phrase[i];
+    }
+    return ch;
 }
 
 chaine deep_copy(chaine ch) {
-   return chaine_build(ch.str);
+    return chaine_build(ch.str);
 }
 
 // Dangereux, car plusieurs pointeurs sur le même tableau de caractères !!!
 // A éviter !!!
 chaine shallow_copy(chaine ch) {
-   chaine cpy;
-   cpy.len = ch.len;
-   cpy.str = ch.str;
-   return cpy;
+    chaine cpy;
+    cpy.len = ch.len;
+    cpy.str = ch.str;
+    return cpy;
 }
 
-// S'il y a plusieurs pointeurs sur le même tableau de caractères, 
+// S'il y a plusieurs pointeurs sur le même tableau de caractères,
 // les autres pointeurs ne seront pas mis à NULL
-void chaine_free(chaine* ch) {
-   if (NULL != ch->str)
-      free(ch->str);
-      ch->str = NULL;
-   }
-   ch->len = -1;
+void chaine_free(chaine *ch) {
+    if (NULL != ch->str) {
+        free(ch->str);
+        ch->str = NULL;
+    }
+    ch->len = -1;
 }
 
 void main() {
-   char* tutu = malloc(10*sizeof(char));
-   for (int i=0;i<6;i++) tutu[i] = 'b';
-   tutu[6] = 0;
-   chaine ch = chaine_build(tutu);
-   chaine tmp =  deep_copy(ch);
-   ch.str[0] = 'a';
-   printf("%d\n",ch.len);
-   printf("%s\n",ch.str);
-   printf("%d\n",tmp.len);
-   printf("%s\n",tmp.str);
+    char *tutu = malloc(10 * sizeof(char));
+    for (int i = 0; i < 6; i++)
+        tutu[i] = 'b';
+    tutu[6]    = 0;
+    chaine ch  = chaine_build(tutu);
+    chaine tmp = deep_copy(ch);
+    ch.str[0]  = 'a';
+    printf("%d\n", ch.len);
+    printf("%s\n", ch.str);
+    printf("%d\n", tmp.len);
+    printf("%s\n", tmp.str);
 }
 
-
-
-
-
-
-
-
-
-
diff --git a/source_codes/recursivity/rec_fibonacci.c b/source_codes/recursivity/rec_fibonacci.c
index 0c8a4874704743ccf94af3801892bf6db08cd652..eb134a868a5855ec01efce19537b652ad96030ee 100644
--- a/source_codes/recursivity/rec_fibonacci.c
+++ b/source_codes/recursivity/rec_fibonacci.c
@@ -3,20 +3,36 @@
 
 // Suite de Fibonacci: a_n = a_{n-1} + a_{n-2}, a_0 = 0, a_1 = 1
 int fib(int n);
+int fib_imp(int n);
 
 int main() {
-   int n;
-   printf("n=");
-   scanf("%d",&n);
-   printf("%d\n",fib(n));
+    int n;
+    printf("n=");
+    scanf("%d", &n);
+    printf("%d\n", fib(n));
+    printf("%d\n", fib_imp(n));
 }
 
 // Suite de Fibonacci: a_n = a_{n-1} + a_{n-2}, a_0 = 0, a_1 = 1
 int fib(int n) {
-   switch(n) {
-    case 0: return 0;
-    case 1: return 1;
-    default: return fib(n-1)+fib(n-2);
-   }
+    switch (n) {
+        case 0:
+            return 0;
+        case 1:
+            return 1;
+        default:
+            return fib(n - 1) + fib(n - 2);
+    }
 }
 
+int fib_imp(int n) {
+    int fib0 = 1;
+    int fib1 = 1;
+    int fib  = n == 0 ? 0 : fib1;
+    for (int i = 2; i < n; ++i) {
+        fib  = fib0 + fib1;
+        fib0 = fib1;
+        fib1 = fib;
+    }
+    return fib;
+}
diff --git a/source_codes/refactor_with_functions/.gitignore b/source_codes/refactor_with_functions/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..c5ed9534211ed38b60f9eaf429a5610ce303587f
--- /dev/null
+++ b/source_codes/refactor_with_functions/.gitignore
@@ -0,0 +1,13 @@
+factorielle_refactored
+tri_select_refactored_part
+chess_queen_refactored
+nb1er_refactored
+tri_select_to_refactor
+eratosthene_refactored
+anagramme_refactored
+palindrome_refactored
+array_1D_init_find_min_refactored
+tri_select_refactored
+pgcd_refactored
+chess_queen_refactored_part
+ppcm_refactored
diff --git a/source_codes/refactor_with_functions/Makefile b/source_codes/refactor_with_functions/Makefile
new file mode 100644
index 0000000000000000000000000000000000000000..75f84c991b55660d30b00240129d0619b773b634
--- /dev/null
+++ b/source_codes/refactor_with_functions/Makefile
@@ -0,0 +1,18 @@
+CC:=gcc
+SAN:=-fsanitize=address
+CFLAGS:=-Wall -Wextra -pedantic -g $(SAN)
+LDFLAGS:=-lm $(SAN)
+
+EXECS := $(shell find . -type f -iname '*.c' | sed 's/\.c//g')
+
+all: $(EXECS)
+
+$(EXECS): %: %.c
+	$(CC) $(CFLAGS) -o $@ $< $(LDFLAGS)
+	@echo $@ >> .gitignore
+
+.PHONY: clean all
+
+clean:
+	rm -f *.o $(EXECS) .gitignore
+
diff --git a/source_codes/refactor_with_functions/chess_queen_refactored_part.c b/source_codes/refactor_with_functions/chess_queen_refactored_part.c
index d3d3a91cd1dc35978b132fa0772b33bdb8a0ee9a..c8f99762bdd418cb5aa2083fb1319f353a6fab60 100644
--- a/source_codes/refactor_with_functions/chess_queen_refactored_part.c
+++ b/source_codes/refactor_with_functions/chess_queen_refactored_part.c
@@ -1,67 +1,72 @@
 #include <stdio.h>
 #include <stdlib.h>
 
-typedef enum _piece {SAFE, VULN, QUEEN} piece;
+typedef enum _piece { SAFE, VULN, QUEEN } piece;
 
-void print(int n,int m,cell tab[n][m]);
-void init_board(int n,int m,cell tab[n][m]);
-void couverture(int n,int m,cell tab[n][m],int r_x,int r_y);
+void print(int n, int m, piece tab[n][m]);
+void init_board(int n, int m, piece tab[n][m]);
+void couverture(int n, int m, piece tab[n][m], int r_x, int r_y);
 
 void main() {
-   int n=8;
-   piece board[n][n];
-   init(n,n,board,SAFE);
-   
-   print(n,n,board);
-   printf("Entrez la colonne de la reine (1..%d): ",n);
-   int r_j;
-   scanf("%d",&r_j);
-   r_j--;
-   printf("Entrez la ligne de la reine ('a'..'%c'): ",n-1+'a');
-   char ch[1];
-   scanf("%s",ch);
-   couverture(n,n,board,ch[0]-'a',r_j);
-   print(n,n,board);
+    int n = 8;
+    piece board[n][n];
+    init(n, n, board, SAFE);
+
+    print(n, n, board);
+    printf("Entrez la colonne de la reine (1..%d): ", n);
+    int r_j;
+    scanf("%d", &r_j);
+    r_j--;
+    printf("Entrez la ligne de la reine ('a'..'%c'): ", n - 1 + 'a');
+    char ch[1];
+    scanf("%s", ch);
+    couverture(n, n, board, ch[0] - 'a', r_j);
+    print(n, n, board);
 }
 
-void print(int n,int m,piece board[n][m]) {
-   for (int i=n-1;i>=0;i--) {
-      printf("%c ",'a'+i);
-      for (int j=0;j<m;j++) {
-         switch(board[i][j]) {
-            case VULN: printf(" *"); break;
-            case SAFE : printf(" o"); break;
-            case QUEEN: printf(" R");
-         }
-      }
-      printf("\n");
-   }
-   printf("\n  ");
-   for (int j=0;j<m;j++) {
-      printf(" %d",j+1);
-   }
-   printf("\n");
+void print(int n, int m, piece board[n][m]) {
+    for (int i = n - 1; i >= 0; i--) {
+        printf("%c ", 'a' + i);
+        for (int j = 0; j < m; j++) {
+            switch (board[i][j]) {
+                case VULN:
+                    printf(" *");
+                    break;
+                case SAFE:
+                    printf(" o");
+                    break;
+                case QUEEN:
+                    printf(" R");
+            }
+        }
+        printf("\n");
+    }
+    printf("\n  ");
+    for (int j = 0; j < m; j++) {
+        printf(" %d", j + 1);
+    }
+    printf("\n");
 }
 
-void couverture(int n,int m,piece board[n][m],int r_i,int r_j) {
-   //colonne de la reine
-   for (int k=0;k<n;k++) {
-      board[k][r_j] = VULN; 
-   }
-   //ligne de la reine
-   for (int k=0;k<m;k++) { 
-      board[r_i][k] = VULN; 
-   }
-   //diagonale montante
-   for (int k=0;r_i+k<n && r_j+k<m;k++) { 
-      board[r_i+k][r_j+k] = VULN; 
-   }
-   //compléter les autres diagonales
-   
-   board[r_i][r_j] = QUEEN;
+void couverture(int n, int m, piece board[n][m], int r_i, int r_j) {
+    // colonne de la reine
+    for (int k = 0; k < n; k++) {
+        board[k][r_j] = VULN;
+    }
+    // ligne de la reine
+    for (int k = 0; k < m; k++) {
+        board[r_i][k] = VULN;
+    }
+    // diagonale montante
+    for (int k = 0; r_i + k < n && r_j + k < m; k++) {
+        board[r_i + k][r_j + k] = VULN;
+    }
+    // compléter les autres diagonales
+
+    board[r_i][r_j] = QUEEN;
 }
 
-void init(int n,int m,piece tab[n][m],piece pce) {
-   // à compléter
+void init(int n, int m, piece tab[n][m], piece pce) {
+    // à compléter
 }
 
diff --git a/source_codes/sorting/.gitignore b/source_codes/sorting/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..0b58fcdcc82a1637b65620db6a563fca2019f983
--- /dev/null
+++ b/source_codes/sorting/.gitignore
@@ -0,0 +1,6 @@
+tris_base_part
+tris_base
+quicksort
+heapsort_main
+heapsort.o
+quicksort_part
diff --git a/source_codes/sorting/Makefile b/source_codes/sorting/Makefile
new file mode 100644
index 0000000000000000000000000000000000000000..97109d9815036dde0ab442c1bbbd10b0e29c2e4b
--- /dev/null
+++ b/source_codes/sorting/Makefile
@@ -0,0 +1,36 @@
+CC:=gcc
+SAN:=-fsanitize=address
+CFLAGS:=-Wall -Wextra -pedantic -g $(SAN)
+LDFLAGS:=-lm $(SAN)
+
+all: tris_base_part tris_base quicksort heapsort_main quicksort_part 
+
+tris_base_part: tris_base_part.c 
+	$(CC) $(CFLAGS) -o $@ $< $(LDFLAGS)
+	@echo $@ >> .gitignore
+
+tris_base: tris_base.c 
+	$(CC) $(CFLAGS) -o $@ $< $(LDFLAGS)
+	@echo $@ >> .gitignore
+
+quicksort: quicksort.c 
+	$(CC) $(CFLAGS) -o $@ $< $(LDFLAGS)
+	@echo $@ >> .gitignore
+
+quicksort_part: quicksort_part.c 
+	$(CC) $(CFLAGS) -o $@ $< $(LDFLAGS)
+	@echo $@ >> .gitignore
+
+heapsort_main: heapsort_main.c heapsort.o 
+	$(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS)
+	@echo $@ >> .gitignore
+	@echo *.o >> .gitignore
+
+
+heapsort.o: heapsort.h
+
+.PHONY: clean all
+
+clean:
+	rm -f *.o tris_base tris_base_part quicksort_part quicksort heapsort_main .gitignore
+
diff --git a/source_codes/structures/.gitignore b/source_codes/structures/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..3b0be08e19b108167024c329497a073d8237d480
--- /dev/null
+++ b/source_codes/structures/.gitignore
@@ -0,0 +1,2 @@
+fractions_part
+fractions
diff --git a/source_codes/structures/Makefile b/source_codes/structures/Makefile
new file mode 100644
index 0000000000000000000000000000000000000000..75f84c991b55660d30b00240129d0619b773b634
--- /dev/null
+++ b/source_codes/structures/Makefile
@@ -0,0 +1,18 @@
+CC:=gcc
+SAN:=-fsanitize=address
+CFLAGS:=-Wall -Wextra -pedantic -g $(SAN)
+LDFLAGS:=-lm $(SAN)
+
+EXECS := $(shell find . -type f -iname '*.c' | sed 's/\.c//g')
+
+all: $(EXECS)
+
+$(EXECS): %: %.c
+	$(CC) $(CFLAGS) -o $@ $< $(LDFLAGS)
+	@echo $@ >> .gitignore
+
+.PHONY: clean all
+
+clean:
+	rm -f *.o $(EXECS) .gitignore
+
diff --git a/source_codes/structures/fractions.c b/source_codes/structures/fractions.c
index 75f36a55b69cc23ffe4bbbb06e5a9500da6060c7..8ff0dfb97c19906619b0b01bd656ea2650a50014 100644
--- a/source_codes/structures/fractions.c
+++ b/source_codes/structures/fractions.c
@@ -1,166 +1,192 @@
+#include <assert.h>
 #include <stdio.h>
 #include <stdlib.h>
-#include <assert.h>
 
 typedef struct _fraction {
-   int num;
-   int den;
+    int num;
+    int den;
 } fraction;
 
 void print(fraction frac) {
-   printf(" %d/%d ",frac.num,frac.den); 
+    printf(" %d/%d ", frac.num, frac.den);
+}
+
+int pgcd(int n, int m) {
+    assert(n > 0 && m > 0);
+    int tmp_n = n, tmp_m = m;
+    while (tmp_n % tmp_m > 0) {
+        int tmp = tmp_n;
+        tmp_n   = tmp_m;
+        tmp_m   = tmp % tmp_m;
+    }
+    return tmp_m;
+}
+
+void reduire(fraction *frac) {
+    if (0 == frac->num) {
+        frac->den = 1;
+    } else {
+        int gcd = pgcd(abs(frac->num), frac->den);
+        frac->num /= gcd;
+        frac->den /= gcd;
+    }
 }
 
-int pgcd(int n,int m) {
-   assert(n > 0 && m > 0);
-   int tmp_n = n,tmp_m = m;
-   while (tmp_n%tmp_m > 0) {
-      int tmp = tmp_n;
-      tmp_n = tmp_m;
-      tmp_m = tmp%tmp_m;
-   }
-   return tmp_m;
+fraction fraction_build(int num, int den) {
+    assert(den != 0);
+    int sign     = den / abs(den);
+    fraction res = {sign * num, sign * den};
+    reduire(&res);
+    return res;
 }
 
-void reduire(fraction* frac) {
-   if (0 == frac->num) { 
-      frac->den = 1;
-   } else {
-      int gcd = pgcd(abs(frac->num),frac->den);
-      frac->num /= gcd;
-      frac->den /= gcd;
-   }
+fraction add(fraction frac1, fraction frac2) {
+    return fraction_build(
+        frac1.num * frac2.den + frac1.den * frac2.num, frac1.den * frac2.den);
 }
 
-fraction fraction_build(int num,int den) {
-   assert(den != 0);
-   int sign = den/abs(den);
-   fraction res = {sign*num,sign*den};
-   reduire(&res);
-   return res;
+fraction add1(int n, fraction frac) {
+    return add(fraction_build(n, 1), frac);
 }
 
-fraction add(fraction frac1,fraction frac2) {
-   return fraction_build(frac1.num*frac2.den+frac1.den*frac2.num,frac1.den*frac2.den);
+fraction add2(fraction frac, int n) {
+    return add1(n, frac);
 }
 
-fraction add1(int n,fraction frac) {
-   return add(fraction_build(n,1),frac);
+void add_inplace(fraction *frac1, fraction frac2) {
+    *frac1 = add(*frac1, frac2);
 }
 
-fraction add2(fraction frac,int n,) {
-   return add1(n,frac);
+void neg_inplace(fraction *frac1) {
+    frac1->num = -frac1->num;
 }
 
-void add_inplace(fraction* frac1,fraction frac2) {
-   *frac1 = add(*frac1,frac2);
+fraction neg(fraction frac) {
+    fraction f = frac;
+    neg_inplace(&f);
+    return f;
 }
 
-fraction sub(fraction frac1,fraction frac2) {
-   return add(frac1,fraction_build(-frac2.num,frac2.den));
+fraction sub(fraction frac1, fraction frac2) {
+    return add(frac1, fraction_build(-frac2.num, frac2.den));
 }
 
-fraction sub1(int n,fraction frac) {
-   return sub(fraction_build(n,1),frac);
+fraction sub1(int n, fraction frac) {
+    return sub(fraction_build(n, 1), frac);
 }
 
-fraction sub2(fraction frac,int n,) {
-   return add(frac,-n);
+fraction sub2(fraction frac, int n) {
+    return add2(frac, -n);
 }
 
-void sub_inplace(fraction* frac1,fraction frac2) {
-   *frac1 = sub(*frac1,frac2);
+void sub_inplace(fraction *frac1, fraction frac2) {
+    *frac1 = sub(*frac1, frac2);
 }
 
-fraction mult(fraction frac1,fraction frac2) {
-   return fraction_build(frac1.num*frac2.num,frac1.den*frac2.den);;
+fraction mult(fraction frac1, fraction frac2) {
+    return fraction_build(frac1.num * frac2.num, frac1.den * frac2.den);
+    ;
 }
 
-fraction mult1(int n,fraction frac) {
-   return mult(frac,fraction_build(n,1));
+fraction mult1(int n, fraction frac) {
+    return mult(frac, fraction_build(n, 1));
 }
 
-fraction mult2(fraction frac,int n) {
-   return mult1(n,frac);
+fraction mult2(fraction frac, int n) {
+    return mult1(n, frac);
 }
 
-void mult_inplace(fraction* frac1,fraction frac2) {
-   *frac1 = mult(*frac1,frac2);
+void mult_inplace(fraction *frac1, fraction frac2) {
+    *frac1 = mult(*frac1, frac2);
 }
 
-fraction divide(fraction frac1,fraction frac2) {
-   assert(frac2.num != 0);
-   int sign = frac2.num/abs(frac2.num);
-   return mult(frac1,fraction_build(sign*frac2.den,abs(frac2.num)));
+fraction divide(fraction frac1, fraction frac2) {
+    assert(frac2.num != 0);
+    int sign = frac2.num / abs(frac2.num);
+    return mult(frac1, fraction_build(sign * frac2.den, abs(frac2.num)));
 }
 
-fraction div1(int n,fraction frac) {
-   return divide(fraction_build(n,1),frac);
+fraction div1(int n, fraction frac) {
+    return divide(fraction_build(n, 1), frac);
 }
 
-fraction div2(fraction frac,int n) {
-   return divide(frac,fraction_build(n,1));
+fraction div2(fraction frac, int n) {
+    return divide(frac, fraction_build(n, 1));
 }
 
-void divide_inplace(fraction* frac1,fraction frac2) {
-   *frac1 = divide(*frac1,frac2);
+void divide_inplace(fraction *frac1, fraction frac2) {
+    *frac1 = divide(*frac1, frac2);
 }
 
-fraction puiss(fraction frac,int n) {
-   fraction prod = fraction_build(1,1); 
-   for (int i=1;i<=abs(n);i++) {
-      prod = mult(prod,frac);
-   }
-   if (n < 0) {
-      prod = div1(1,prod);
-   }
-   return prod;
+fraction puiss(fraction frac, int n) {
+    fraction prod = fraction_build(1, 1);
+    for (int i = 1; i <= abs(n); i++) {
+        prod = mult(prod, frac);
+    }
+    if (n < 0) {
+        prod = div1(1, prod);
+    }
+    return prod;
 }
 
 float reel(fraction frac) {
-   return (float)frac.num/(float)frac.den;
-}
-
-fraction compute(fraction f1,fraction f2,char op) {     
-   fraction res;
-   switch(op) {
-      case 'x': res = mult(f1,f2);      break;     
-      case '+': res = add(f1,f2);       break;       
-      case '/': res = divide(f1,f2);    break;      
-      case '-': res = sub(f1,f2);       break;
-      case 'p': res = puiss(f1,f2.num); break;
-      default : printf("Pas implémenté\n");
-   }
-   return res;
-}
-  
-void main(int argc,char** argv) {
-   fraction f1,f2;
-   switch(argc) {
-      case 3:
-         printf("%d\n",pgcd(atoi(argv[1]),atoi(argv[2])));
-         break;
-      case 5:
-         // teste si le 2ème argument est un dénominateur (donc > 0)
-         if ('1' <= argv[2][0] && argv[2][0] <= '9') {
-            f1 = fraction_build(atoi(argv[1]),atoi(argv[2]));
-            f2 = fraction_build(atoi(argv[4]),1);
-            print(compute(f1,f2,argv[3][0]));
-         } else {
-            f1 = fraction_build(atoi(argv[1]),1);
-            f2 = fraction_build(atoi(argv[3]),atoi(argv[4]));
-            print(compute(f1,f2,argv[2][0]));
-         }
-         break;
-      case 6:
-         f1 = fraction_build(atoi(argv[1]),atoi(argv[2]));
-         print(f1); printf("\n");
-         f2 = fraction_build(atoi(argv[4]),atoi(argv[5]));
-         print(f2); printf("\n");
-         print(compute(f1,f2,argv[3][0]));
-         break;
-      default: printf("Pas implémenté\n");
-   }
-   printf("\n");
+    return (float)frac.num / (float)frac.den;
+}
+
+fraction compute(fraction f1, fraction f2, char op) {
+    fraction res;
+    switch (op) {
+        case 'x':
+            res = mult(f1, f2);
+            break;
+        case '+':
+            res = add(f1, f2);
+            break;
+        case '/':
+            res = divide(f1, f2);
+            break;
+        case '-':
+            res = sub(f1, f2);
+            break;
+        case 'p':
+            res = puiss(f1, f2.num);
+            break;
+        default:
+            printf("Pas implémenté\n");
+    }
+    return res;
+}
+
+void main(int argc, char **argv) {
+    fraction f1, f2;
+    switch (argc) {
+        case 3:
+            printf("%d\n", pgcd(atoi(argv[1]), atoi(argv[2])));
+            break;
+        case 5:
+            // teste si le 2ème argument est un dénominateur (donc > 0)
+            if ('1' <= argv[2][0] && argv[2][0] <= '9') {
+                f1 = fraction_build(atoi(argv[1]), atoi(argv[2]));
+                f2 = fraction_build(atoi(argv[4]), 1);
+                print(compute(f1, f2, argv[3][0]));
+            } else {
+                f1 = fraction_build(atoi(argv[1]), 1);
+                f2 = fraction_build(atoi(argv[3]), atoi(argv[4]));
+                print(compute(f1, f2, argv[2][0]));
+            }
+            break;
+        case 6:
+            f1 = fraction_build(atoi(argv[1]), atoi(argv[2]));
+            print(f1);
+            printf("\n");
+            f2 = fraction_build(atoi(argv[4]), atoi(argv[5]));
+            print(f2);
+            printf("\n");
+            print(compute(f1, f2, argv[3][0]));
+            break;
+        default:
+            printf("Pas implémenté\n");
+    }
+    printf("\n");
 }
 
diff --git a/source_codes/structures/fractions_part.c b/source_codes/structures/fractions_part.c
index 8c0095a3103c588a7aa32968ec9d98e1dfb2c2cc..2a0b105cc52586996068def22e42a04afcda7c69 100644
--- a/source_codes/structures/fractions_part.c
+++ b/source_codes/structures/fractions_part.c
@@ -1,172 +1,187 @@
+#include <assert.h>
 #include <stdio.h>
 #include <stdlib.h>
-#include <assert.h>
 
 typedef struct _fraction {
-   int num;
-   int den;
+    int num;
+    int den;
 } fraction;
 
 void print(fraction frac) {
-   printf(" %d/%d ",frac.num,frac.den); 
+    printf(" %d/%d ", frac.num, frac.den);
 }
 
-int pgcd(int n,int m) {
-   assert(n > 0 && m > 0);
-   int tmp_n = n,tmp_m = m;
-   while (tmp_n%tmp_m > 0) {
-      int tmp = tmp_n;
-      tmp_n = tmp_m;
-      tmp_m = tmp%tmp_m;
-   }
-   return tmp_m;
+int pgcd(int n, int m) {
+    assert(n > 0 && m > 0);
+    int tmp_n = n, tmp_m = m;
+    while (tmp_n % tmp_m > 0) {
+        int tmp = tmp_n;
+        tmp_n   = tmp_m;
+        tmp_m   = tmp % tmp_m;
+    }
+    return tmp_m;
 }
 
-void reduire(fraction* frac) {
-   if (0 == frac->num) { 
-      frac->den = 1;
-   } else {
-      int gcd = pgcd(abs(frac->num),frac->den);
-      frac->num /= gcd;
-      frac->den /= gcd;
-   }
+void reduire(fraction *frac) {
+    if (0 == frac->num) {
+        frac->den = 1;
+    } else {
+        int gcd = pgcd(abs(frac->num), frac->den);
+        frac->num /= gcd;
+        frac->den /= gcd;
+    }
 }
 
-fraction fraction_build(int num,int den) {
-   assert(den != 0);
-   int sign = den/abs(den);
-   fraction res = {sign*num,sign*den};
-   reduire(&res);
-   return res;
+fraction fraction_build(int num, int den) {
+    assert(den != 0);
+    int sign     = den / abs(den);
+    fraction res = {sign * num, sign * den};
+    reduire(&res);
+    return res;
 }
 
-fraction add(fraction frac1,fraction frac2) {
-   return fraction_build(frac1.num*frac2.den+frac1.den*frac2.num,frac1.den*frac2.den);
+fraction add(fraction frac1, fraction frac2) {
+    return fraction_build(
+        frac1.num * frac2.den + frac1.den * frac2.num, frac1.den * frac2.den);
 }
 
-fraction add1(int n,fraction frac) {
-   return add(fraction_build(n,1),frac);
+fraction add1(int n, fraction frac) {
+    return add(fraction_build(n, 1), frac);
 }
 
-fraction add2(fraction frac,int n,) {
-   return add1(n,frac);
+fraction add2(fraction frac, int n) {
+    return add1(n, frac);
 }
 
-void add_inplace(fraction* frac1,fraction frac2) {
-   *frac1 = add(*frac1,frac2);
+void add_inplace(fraction *frac1, fraction frac2) {
+    *frac1 = add(*frac1, frac2);
 }
 
-fraction sub(fraction frac1,fraction frac2) {
-   return add(frac1,fraction_build(-frac2.num,frac2.den));
+fraction sub(fraction frac1, fraction frac2) {
+    return add(frac1, fraction_build(-frac2.num, frac2.den));
 }
 
-fraction sub1(int n,fraction frac) {
-   //à compléter
-   return fraction_build(0,1);
+fraction sub1(int n, fraction frac) {
+    //à compléter
+    return fraction_build(0, 1);
 }
 
-fraction sub2(fraction frac,int n,) {
-   //à compléter
-   return fraction_build(0,1);
+fraction sub2(fraction frac, int n) {
+    //à compléter
+    return fraction_build(0, 1);
 }
 
-void sub_inplace(fraction* frac1,fraction frac2) {
-   //à compléter
+void sub_inplace(fraction *frac1, fraction frac2) {
+    //à compléter
 }
 
-fraction mult(fraction frac1,fraction frac2) {
-   return fraction_build(frac1.num*frac2.num,frac1.den*frac2.den);
+fraction mult(fraction frac1, fraction frac2) {
+    return fraction_build(frac1.num * frac2.num, frac1.den * frac2.den);
 }
 
-fraction mult1(int n,fraction frac) {
-   //à compléter
-   return fraction_build(0,1);
+fraction mult1(int n, fraction frac) {
+    //à compléter
+    return fraction_build(0, 1);
 }
 
-fraction mult2(fraction frac,int n) {
-   //à compléter
-   return fraction_build(0,1);
+fraction mult2(fraction frac, int n) {
+    //à compléter
+    return fraction_build(0, 1);
 }
 
-void mult_inplace(fraction* frac1,fraction frac2) {
-   //à compléter
+void mult_inplace(fraction *frac1, fraction frac2) {
+    //à compléter
 }
 
-fraction divide(fraction frac1,fraction frac2) {
-   assert(frac2.num != 0);
-   int sign = frac2.num/abs(frac2.num);
-   return mult(frac1,fraction_build(sign*frac2.den,abs(frac2.num)));
+fraction divide(fraction frac1, fraction frac2) {
+    assert(frac2.num != 0);
+    int sign = frac2.num / abs(frac2.num);
+    return mult(frac1, fraction_build(sign * frac2.den, abs(frac2.num)));
 }
 
-fraction div1(int n,fraction frac) {
-   //à compléter
-   return fraction_build(0,1);
+fraction div1(int n, fraction frac) {
+    //à compléter
+    return fraction_build(0, 1);
 }
 
-fraction div2(fraction frac,int n) {
-   //à compléter
-   return fraction_build(0,1);
+fraction div2(fraction frac, int n) {
+    //à compléter
+    return fraction_build(0, 1);
 }
 
-void divide_inplace(fraction* frac1,fraction frac2) {
-   //à compléter
+void divide_inplace(fraction *frac1, fraction frac2) {
+    //à compléter
 }
 
-fraction puiss(fraction frac,int n) {
-   fraction prod = fraction_build(1,1); 
-   for (int i=1;i<=abs(n);i++) {
-      prod = mult(prod,frac);
-   }
-   if (n < 0) {
-      prod = div1(1,prod);
-   }
-   return prod;
+fraction puiss(fraction frac, int n) {
+    fraction prod = fraction_build(1, 1);
+    for (int i = 1; i <= abs(n); i++) {
+        prod = mult(prod, frac);
+    }
+    if (n < 0) {
+        prod = div1(1, prod);
+    }
+    return prod;
 }
 
 float reel(fraction frac) {
-   return (float)frac.num/(float)frac.den;
-}
-
-fraction compute(fraction f1,fraction f2,char op) {     
-   fraction res;
-   switch(op) {
-      case 'x': res = mult(f1,f2);      break;     
-      case '+': res = add(f1,f2);       break;       
-      case '/': res = divide(f1,f2);    break;      
-      case '-': res = sub(f1,f2);       break;
-      case 'p': res = puiss(f1,f2.num); break;
-      default : printf("Pas implémenté\n");
-   }
-   return res;
-}
-  
-void main(int argc,char** argv) {
-   fraction f1,f2;
-   switch(argc) {
-      case 3:
-         printf("%d\n",pgcd(atoi(argv[1]),atoi(argv[2])));
-         break;
-      case 5:
-         // teste si le 2ème argument est un dénominateur (donc > 0)
-         if ('1' <= argv[2][0] && argv[2][0] <= '9') {
-            f1 = fraction_build(atoi(argv[1]),atoi(argv[2]));
-            f2 = fraction_build(atoi(argv[4]),1);
-            print(compute(f1,f2,argv[3][0]));
-         } else {
-            f1 = fraction_build(atoi(argv[1]),1);
-            f2 = fraction_build(atoi(argv[3]),atoi(argv[4]));
-            print(compute(f1,f2,argv[2][0]));
-         }
-         break;
-      case 6:
-         f1 = fraction_build(atoi(argv[1]),atoi(argv[2]));
-         print(f1); printf("\n");
-         f2 = fraction_build(atoi(argv[4]),atoi(argv[5]));
-         print(f2); printf("\n");
-         print(compute(f1,f2,argv[3][0]));
-         break;
-      default: printf("Pas implémenté\n");
-   }
-   printf("\n");
+    return (float)frac.num / (float)frac.den;
+}
+
+fraction compute(fraction f1, fraction f2, char op) {
+    fraction res;
+    switch (op) {
+        case 'x':
+            res = mult(f1, f2);
+            break;
+        case '+':
+            res = add(f1, f2);
+            break;
+        case '/':
+            res = divide(f1, f2);
+            break;
+        case '-':
+            res = sub(f1, f2);
+            break;
+        case 'p':
+            res = puiss(f1, f2.num);
+            break;
+        default:
+            printf("Pas implémenté\n");
+    }
+    return res;
+}
+
+void main(int argc, char **argv) {
+    fraction f1, f2;
+    switch (argc) {
+        case 3:
+            printf("%d\n", pgcd(atoi(argv[1]), atoi(argv[2])));
+            break;
+        case 5:
+            // teste si le 2ème argument est un dénominateur (donc > 0)
+            if ('1' <= argv[2][0] && argv[2][0] <= '9') {
+                f1 = fraction_build(atoi(argv[1]), atoi(argv[2]));
+                f2 = fraction_build(atoi(argv[4]), 1);
+                print(compute(f1, f2, argv[3][0]));
+            } else {
+                f1 = fraction_build(atoi(argv[1]), 1);
+                f2 = fraction_build(atoi(argv[3]), atoi(argv[4]));
+                print(compute(f1, f2, argv[2][0]));
+            }
+            break;
+        case 6:
+            f1 = fraction_build(atoi(argv[1]), atoi(argv[2]));
+            print(f1);
+            printf("\n");
+            f2 = fraction_build(atoi(argv[4]), atoi(argv[5]));
+            print(f2);
+            printf("\n");
+            print(compute(f1, f2, argv[3][0]));
+            break;
+        default:
+            printf("Pas implémenté\n");
+    }
+    printf("\n");
 }
 
diff --git a/source_codes/tableaux_1d/.gitignore b/source_codes/tableaux_1d/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..a131353cd4b7b80a0865a8c9beedc1c9227982c9
--- /dev/null
+++ b/source_codes/tableaux_1d/.gitignore
@@ -0,0 +1,6 @@
+array_1D_init_find_min
+palindrome
+eratosthene
+tri_select
+anagramme
+tri_select_ebauche
diff --git a/source_codes/tableaux_1d/Makefile b/source_codes/tableaux_1d/Makefile
new file mode 100644
index 0000000000000000000000000000000000000000..75f84c991b55660d30b00240129d0619b773b634
--- /dev/null
+++ b/source_codes/tableaux_1d/Makefile
@@ -0,0 +1,18 @@
+CC:=gcc
+SAN:=-fsanitize=address
+CFLAGS:=-Wall -Wextra -pedantic -g $(SAN)
+LDFLAGS:=-lm $(SAN)
+
+EXECS := $(shell find . -type f -iname '*.c' | sed 's/\.c//g')
+
+all: $(EXECS)
+
+$(EXECS): %: %.c
+	$(CC) $(CFLAGS) -o $@ $< $(LDFLAGS)
+	@echo $@ >> .gitignore
+
+.PHONY: clean all
+
+clean:
+	rm -f *.o $(EXECS) .gitignore
+
diff --git a/source_codes/tableaux_1d/tri_select_ebauche.c b/source_codes/tableaux_1d/tri_select_ebauche.c
index 2ada6c532f5393d0e360f0826e7686399ede7f17..2ad897b4dd89a31dd65e7f3fa13fcba95a73d964 100644
--- a/source_codes/tableaux_1d/tri_select_ebauche.c
+++ b/source_codes/tableaux_1d/tri_select_ebauche.c
@@ -5,43 +5,43 @@ const int SIZE = 13;
 
 // Tri par sélection
 void main() {
-   //déclaration et intialisation du tableau
-   srand(time(NULL));
-   double tab[SIZE];
-   for (int i=0;i<SIZE;i++) {
-      tab[i] = 100.0*(rand()/(double)RAND_MAX);
-   }
-   
-   //impression du tableau
-   for (int i=0;i<SIZE;i++) {
-      printf("%.2lf ",tab[i]);
-   }
-   printf("\n");
-   //à compléter
-   int debut = 0;
-   for (....) { //à compléter
-      // recherche du plus petit élément du sous-tableau de début à SIZE
-      int ind_min = 0; // à remplacer 0 par debut
-      double val_min = tab[0]; // à remplacer 0 par debut
-      for (int i = 1; i < SIZE; ++i) { //à remplacer 1 par debut+1
-         if (val_min > tab[i]) {
-            val_min = tab[i];
-            ind_min = i;
-         }
-      }
-      printf("val. min. = %.2lf / index min. = %d\n ",val_min,ind_min);
-      // permuter le plus petit élément avec le premier élément du tableau
-      double tmp = tab[0];   // à remplacer 0 par debut
-      tab[0] = tab[ind_min]; // à remplacer 0 par debut
-      tab[ind_min] = tmp;
-   }
+    // déclaration et intialisation du tableau
+    srand(time(NULL));
+    double tab[SIZE];
+    for (int i = 0; i < SIZE; i++) {
+        tab[i] = 100.0 * (rand() / (double)RAND_MAX);
+    }
 
-   //impression du tableau
-   for (int i=0;i<SIZE;i++) {
-      printf("%.2lf ",tab[i]);
-   }
-   printf("\n");
+    // impression du tableau
+    for (int i = 0; i < SIZE; i++) {
+        printf("%.2lf ", tab[i]);
+    }
+    printf("\n");
+    //à compléter
+    int debut = 0;
+    for (int k = 0; k < -1; ++k) { //à compléter, ce code est FAUX
+        // recherche du plus petit élément du sous-tableau de début à SIZE
+        int ind_min    = 0;              // à remplacer 0 par debut
+        double val_min = tab[0];         // à remplacer 0 par debut
+        for (int i = 1; i < SIZE; ++i) { //à remplacer 1 par debut+1
+            if (val_min > tab[i]) {
+                val_min = tab[i];
+                ind_min = i;
+            }
+        }
+        printf("val. min. = %.2lf / index min. = %d\n ", val_min, ind_min);
+        // permuter le plus petit élément avec le premier élément du tableau
+        double tmp   = tab[0];       // à remplacer 0 par debut
+        tab[0]       = tab[ind_min]; // à remplacer 0 par debut
+        tab[ind_min] = tmp;
+    }
 
-   //validation que le tableau est trié
-   //à compléter
+    // impression du tableau
+    for (int i = 0; i < SIZE; i++) {
+        printf("%.2lf ", tab[i]);
+    }
+    printf("\n");
+
+    // validation que le tableau est trié
+    //à compléter
 }
diff --git a/source_codes/tableaux_2d/.gitignore b/source_codes/tableaux_2d/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..041e808484d27dc47b02a4d96acddc84abb26b4e
--- /dev/null
+++ b/source_codes/tableaux_2d/.gitignore
@@ -0,0 +1,4 @@
+chess_queen_part
+chess_queen
+calcul_matrix
+matrix.o
diff --git a/source_codes/tableaux_2d/Makefile b/source_codes/tableaux_2d/Makefile
new file mode 100644
index 0000000000000000000000000000000000000000..9a1970ea712640bab94cdb42935ab9525d4fc2c4
--- /dev/null
+++ b/source_codes/tableaux_2d/Makefile
@@ -0,0 +1,27 @@
+CC:=gcc
+SAN:=-fsanitize=address
+CFLAGS:=-Wall -Wextra -pedantic -g $(SAN)
+LDFLAGS:=-lm $(SAN)
+
+all: chess_queen_part chess_queen calcul_matrix
+
+chess_queen_part: chess_queen_part.c 
+	$(CC) $(CFLAGS) -o $@ $< $(LDFLAGS)
+	@echo $@ >> .gitignore
+
+chess_queen: chess_queen.c 
+	$(CC) $(CFLAGS) -o $@ $< $(LDFLAGS)
+	@echo $@ >> .gitignore
+
+calcul_matrix: calcul_matrix.c matrix.o
+	$(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS)
+	@echo $@ >> .gitignore
+	@echo *.o >> .gitignore
+
+matrix.o: matrix.h
+
+.PHONY: clean all
+
+clean:
+	rm -f *.o chess_queen_part chess_queen calcul_matrix .gitignore
+
diff --git a/source_codes/tableaux_2d/chess_queen.c b/source_codes/tableaux_2d/chess_queen.c
index 60a7cb588ce6dce129c1f01fd2a3e035f3707eab..79b62d6f8c578981ec083a6c0943c2e7a5a85c9f 100644
--- a/source_codes/tableaux_2d/chess_queen.c
+++ b/source_codes/tableaux_2d/chess_queen.c
@@ -1,71 +1,75 @@
 #include <stdio.h>
 #include <stdlib.h>
 
-typedef enum _piece {SAFE, VULN, QUEEN} piece;
-
-void print(int n,int m,cell tab[n][m]);
-void init_board(int n,int m,cell tab[n][m]);
-void couverture(int n,int m,cell tab[n][m],int r_x,int r_y);
+typedef enum _piece { SAFE, VULN, QUEEN } piece;
 
+void print(int n, int m, piece tab[n][m]);
+void init_board(int n, int m, piece tab[n][m]);
+void couverture(int n, int m, piece tab[n][m], int r_x, int r_y);
 
 void main() {
-   int n=8;
-   piece board[n][n];
-   init(n,n,board,SAFE);
-   
-   print(n,n,board);
-   printf("Entrez la colonne de la reine (1..%d): ",n);
-   int r_j;
-   scanf("%d",&r_j);
-   r_j--;
-   printf("Entrez la ligne de la reine ('a'..'%c'): ",n-1+'a');
-   char ch[1];
-   scanf("%s",ch);
-   couverture(n,n,board,ch[0]-'a',r_j);
-   print(n,n,board);
+    int n = 8;
+    piece board[n][n];
+    init(n, n, board, SAFE);
+
+    print(n, n, board);
+    printf("Entrez la colonne de la reine (1..%d): ", n);
+    int r_j;
+    scanf("%d", &r_j);
+    r_j--;
+    printf("Entrez la ligne de la reine ('a'..'%c'): ", n - 1 + 'a');
+    char ch[1];
+    scanf("%s", ch);
+    couverture(n, n, board, ch[0] - 'a', r_j);
+    print(n, n, board);
 }
 
-void print(int n,int m,piece board[n][m]) {
-   for (int i=n-1;i>=0;i--) {
-      printf("%c ",'a'+i);
-      for (int j=0;j<m;j++) {
-         switch(board[i][j]) {
-            case VULN: printf(" *"); break;
-            case SAFE : printf(" o"); break;
-            case QUEEN: printf(" R");
-         }
-      }
-      printf("\n");
-   }
-   printf("\n  ");
-   for (int j=0;j<m;j++) {
-      printf(" %d",j+1);
-   }
-   printf("\n");
+void print(int n, int m, piece board[n][m]) {
+    for (int i = n - 1; i >= 0; i--) {
+        printf("%c ", 'a' + i);
+        for (int j = 0; j < m; j++) {
+            switch (board[i][j]) {
+                case VULN:
+                    printf(" *");
+                    break;
+                case SAFE:
+                    printf(" o");
+                    break;
+                case QUEEN:
+                    printf(" R");
+            }
+        }
+        printf("\n");
+    }
+    printf("\n  ");
+    for (int j = 0; j < m; j++) {
+        printf(" %d", j + 1);
+    }
+    printf("\n");
 }
 
-void couverture(int n,int m,piece board[n][m],int r_i,int r_j) {
-   for (int k=0;k<n;k++) {
-      board[k][r_j] = VULN; //colonne de la reine
-   }
-   for (int k=0;k<m;k++) { 
-      board[r_i][k] = VULN; //ligne de la reine
-      int tmp = r_j-k;
-      if (0 <= r_i+tmp && r_i+tmp < n) { //diagonale montante
-         board[r_i+tmp][k] = VULN; 
-      }
-      if (0 <= r_i-tmp && r_i-tmp < n) { //diagonale descendante
-         board[r_i-tmp][k] = VULN;
-      }
-   }
-   board[r_i][r_j] = QUEEN;
+void couverture(int n, int m, piece board[n][m], int r_i, int r_j) {
+    for (int k = 0; k < n; k++) {
+        board[k][r_j] = VULN; // colonne de la reine
+    }
+    for (int k = 0; k < m; k++) {
+        board[r_i][k] = VULN; // ligne de la reine
+        int tmp       = r_j - k;
+        if (0 <= r_i + tmp && r_i + tmp < n) { // diagonale montante
+            board[r_i + tmp][k] = VULN;
+        }
+        if (0 <= r_i - tmp && r_i - tmp < n) { // diagonale descendante
+            board[r_i - tmp][k] = VULN;
+        }
+    }
+    board[r_i][r_j] = QUEEN;
 }
 
-void init(int n,int m,piece tab[n][m],piece pce) {
-   for (int i=0;i<n;i++) {
-      for (int j=0;j<m;j++) {
-         tab[i][j] = pce;
-      }
-   }
+void init(int n, int m, piece tab[n][m], piece pce) {
+    for (int i = 0; i < n; i++) {
+        for (int j = 0; j < m; j++) {
+            tab[i][j] = pce;
+        }
+    }
 }
 
diff --git a/source_codes/tableaux_2d/chess_queen_part.c b/source_codes/tableaux_2d/chess_queen_part.c
index d3d3a91cd1dc35978b132fa0772b33bdb8a0ee9a..c8f99762bdd418cb5aa2083fb1319f353a6fab60 100644
--- a/source_codes/tableaux_2d/chess_queen_part.c
+++ b/source_codes/tableaux_2d/chess_queen_part.c
@@ -1,67 +1,72 @@
 #include <stdio.h>
 #include <stdlib.h>
 
-typedef enum _piece {SAFE, VULN, QUEEN} piece;
+typedef enum _piece { SAFE, VULN, QUEEN } piece;
 
-void print(int n,int m,cell tab[n][m]);
-void init_board(int n,int m,cell tab[n][m]);
-void couverture(int n,int m,cell tab[n][m],int r_x,int r_y);
+void print(int n, int m, piece tab[n][m]);
+void init_board(int n, int m, piece tab[n][m]);
+void couverture(int n, int m, piece tab[n][m], int r_x, int r_y);
 
 void main() {
-   int n=8;
-   piece board[n][n];
-   init(n,n,board,SAFE);
-   
-   print(n,n,board);
-   printf("Entrez la colonne de la reine (1..%d): ",n);
-   int r_j;
-   scanf("%d",&r_j);
-   r_j--;
-   printf("Entrez la ligne de la reine ('a'..'%c'): ",n-1+'a');
-   char ch[1];
-   scanf("%s",ch);
-   couverture(n,n,board,ch[0]-'a',r_j);
-   print(n,n,board);
+    int n = 8;
+    piece board[n][n];
+    init(n, n, board, SAFE);
+
+    print(n, n, board);
+    printf("Entrez la colonne de la reine (1..%d): ", n);
+    int r_j;
+    scanf("%d", &r_j);
+    r_j--;
+    printf("Entrez la ligne de la reine ('a'..'%c'): ", n - 1 + 'a');
+    char ch[1];
+    scanf("%s", ch);
+    couverture(n, n, board, ch[0] - 'a', r_j);
+    print(n, n, board);
 }
 
-void print(int n,int m,piece board[n][m]) {
-   for (int i=n-1;i>=0;i--) {
-      printf("%c ",'a'+i);
-      for (int j=0;j<m;j++) {
-         switch(board[i][j]) {
-            case VULN: printf(" *"); break;
-            case SAFE : printf(" o"); break;
-            case QUEEN: printf(" R");
-         }
-      }
-      printf("\n");
-   }
-   printf("\n  ");
-   for (int j=0;j<m;j++) {
-      printf(" %d",j+1);
-   }
-   printf("\n");
+void print(int n, int m, piece board[n][m]) {
+    for (int i = n - 1; i >= 0; i--) {
+        printf("%c ", 'a' + i);
+        for (int j = 0; j < m; j++) {
+            switch (board[i][j]) {
+                case VULN:
+                    printf(" *");
+                    break;
+                case SAFE:
+                    printf(" o");
+                    break;
+                case QUEEN:
+                    printf(" R");
+            }
+        }
+        printf("\n");
+    }
+    printf("\n  ");
+    for (int j = 0; j < m; j++) {
+        printf(" %d", j + 1);
+    }
+    printf("\n");
 }
 
-void couverture(int n,int m,piece board[n][m],int r_i,int r_j) {
-   //colonne de la reine
-   for (int k=0;k<n;k++) {
-      board[k][r_j] = VULN; 
-   }
-   //ligne de la reine
-   for (int k=0;k<m;k++) { 
-      board[r_i][k] = VULN; 
-   }
-   //diagonale montante
-   for (int k=0;r_i+k<n && r_j+k<m;k++) { 
-      board[r_i+k][r_j+k] = VULN; 
-   }
-   //compléter les autres diagonales
-   
-   board[r_i][r_j] = QUEEN;
+void couverture(int n, int m, piece board[n][m], int r_i, int r_j) {
+    // colonne de la reine
+    for (int k = 0; k < n; k++) {
+        board[k][r_j] = VULN;
+    }
+    // ligne de la reine
+    for (int k = 0; k < m; k++) {
+        board[r_i][k] = VULN;
+    }
+    // diagonale montante
+    for (int k = 0; r_i + k < n && r_j + k < m; k++) {
+        board[r_i + k][r_j + k] = VULN;
+    }
+    // compléter les autres diagonales
+
+    board[r_i][r_j] = QUEEN;
 }
 
-void init(int n,int m,piece tab[n][m],piece pce) {
-   // à compléter
+void init(int n, int m, piece tab[n][m], piece pce) {
+    // à compléter
 }