diff --git a/main.c b/main.c
index 1ec4ac3de05e23cca18a5da9df85f151ec78ef00..4a851d847d77e222239f99ed0c2383c55bdd88a2 100644
--- a/main.c
+++ b/main.c
@@ -2,48 +2,53 @@
 
 int main(void)
 {
+    char *msg = "1001";
     printf("\n----- II. Derrière certaines matrices génératrices... -----\n\n");
 
     printf("-- Q3 --\n\n");
-    printf("Message : %s\nMessage encodé : %s\n\n", "1001", encode("11100111"));
-    printf("Message encodé (sans erreur) : %s\nSyndrome : %s\n\n", "10101101", decode("10101101"));     // Le syndrome doit être 0000
-    printf("Message encodé (avec une erreur) : %s\nSyndrome : %s\n\n", "10100101", decode("10100101")); // Le syndrome doit être 1000
+    printf("Message : %s\nMessage encodé : %s\n\n", msg, encode(msg));
+    printf("Message encodé (sans erreur) : %s\nSyndrome : %s\n\n", encode(msg), decode(encode(msg)));                                 // Le syndrome doit être 0000
+    printf("Message encodé (avec une erreur) : %s\nSyndrome : %s\n\n", set_error(encode(msg), 0), decode(set_error(encode(msg), 0))); // Le syndrome doit être 1000
 
     printf("-- Q4 --\n\n");
-    printf("La distance de Hamming entre les codewords %s et %s est : %d\n\n", "10011000", "10001011", hamming_distance("10011000","10001011"));
+    char *c1 = "10011000", *c2 = "10001011";
+    printf("La distance de Hamming entre les codewords %s et %s est : %d\n\n", c1, c2, hamming_distance(c1, c2));
 
     printf("----- IV. Restaurez la gloire matricielle de P -----\n\n");
+
     printf("-- Q1 --\n\n");
-    printf("Message : %s\n\tMessage encodé avec la matrice : %s\n\tMessage encodé avec le polynôme : %s\n\t%s\n\n", "1001", encode("1001"), polynomial_encode("1001"), strcmp(encode("1001"),polynomial_encode("1001")) == 0 ? "Bon résultat" : "Mauvais résultat");
+    printf("Message : %s\n\tMessage encodé avec la matrice : %s\n\tMessage encodé avec le polynôme : %s\n\t%s\n\n", msg, encode(msg), polynomial_encode(msg), strcmp(encode(msg), polynomial_encode(msg)) == 0 ? "Bon résultat" : "Mauvais résultat");
+    printf("Message encodé (sans erreur) : %s\nSyndrome : %s\n\n", polynomial_encode(msg), polynomial_decode(polynomial_encode(msg))); // Le syndrome doit être 0000
+    printf("Message encodé (avec une erreur) : %s\nSyndrome : %s\n\n", set_error(polynomial_encode(msg), 0), polynomial_decode(set_error(polynomial_encode(msg), 0)));  // Le syndrome doit être 1000
 
     printf("-- Q2 --\n\n");
-    // printf("Codeword : %s\t\tCodeword avec une erreur à la position %d : %s\n\n","10101101", 2, set_error("10101101", 2));
+    printf("Codeword : %s\t\tCodeword avec une erreur à la position %d : %s\n\n", encode(msg), 2, set_error(encode(msg), 2));
 
     printf("-- Q3 --\n\n");
-    // char* codeword = polynomial_encode("1010");
-    // printf("Codeword : %s\n", codeword);
-    // for(int i = 0; i < 8; i++)
-    // {
-    //     char* false_codeword = set_error(codeword, i);
-    //     printf("Erreur à la position %d : %s\t\tC mod P : %s\n", i, false_codeword, polynomial_decode(false_codeword));
-    // }
-    // printf("\n");
-
-    // codeword = polynomial_encode("1101");
-    // printf("\nCodeword : %s\n", codeword);
-    // for (int i = 0; i < 8; i++)
-    // {
-    //     char *false_codeword = set_error(codeword, i);
-    //     printf("Erreur à la position %d : %s\t\tC mod P : %s\n", i, false_codeword, polynomial_decode(false_codeword));
-    // }
-    // printf("\n");
-
-    // codeword = polynomial_encode("0111");
-    // printf("\nCodeword : %s\n", codeword);
-    // for (int i = 0; i < 8; i++)
-    // {
-    //     char *false_codeword = set_error(codeword, i);
-    //     printf("Erreur à la position %d : %s\t\tC mod P: %s\n", i, false_codeword, polynomial_decode(false_codeword));
-    // }
+    char* codeword = polynomial_encode(msg);
+    printf("Codeword : %s\n", codeword);
+    for(int i = 0; i < 8; i++)
+    {
+        char* false_codeword = set_error(codeword, i);
+        printf("Erreur à la position %d : %s\t\tC mod P : %s\n", i, false_codeword, polynomial_decode(false_codeword));
+    }
+    printf("\n");
+
+    codeword = polynomial_encode("1101");
+    printf("\nCodeword : %s\n", codeword);
+    for (int i = 0; i < 8; i++)
+    {
+        char *false_codeword = set_error(codeword, i);
+        printf("Erreur à la position %d : %s\t\tC mod P : %s\n", i, false_codeword, polynomial_decode(false_codeword));
+    }
+    printf("\n");
+
+    codeword = polynomial_encode("0111");
+    printf("\nCodeword : %s\n", codeword);
+    for (int i = 0; i < 8; i++)
+    {
+        char *false_codeword = set_error(codeword, i);
+        printf("Erreur à la position %d : %s\t\tC mod P: %s\n", i, false_codeword, polynomial_decode(false_codeword));
+    }
     printf("\n\n");
 }
\ No newline at end of file
diff --git a/rapport.md b/rapport.md
index 5d7a00386aa8f8867251e326ecf300331dd4bc2c..3ff860838ac1dd5276755241aa3ca33f9f78cdd1 100644
--- a/rapport.md
+++ b/rapport.md
@@ -16,11 +16,12 @@ La taille des blocs que l'on peut encoder est de 4 bits. Le nombre de bits de co
 
 * *Son rendement ;*
 
-Son rendement est de $4/8$ (50%).
+Son rendement est de $\frac{4}{8}$ (50%).
 
 * *La distance de Hamming du code C ;*
 
-La distance de Hamming du code C est $d = 4$.
+On sait que la $distance = Min_{X ≠ 0} (Poids(X))$.
+On remarque que le poids minimal des codewords de la matrice G est de 3. Donc la distance de Hamming du code C est $d = 3$.
 
 * *Sa matrice de vérification de parité H*
 
@@ -30,9 +31,9 @@ $$H = \begin{bmatrix}1 & 1 & 0 & 0 & 1 & 0 & 0 & 0\\
 1 & 0 & 0 & 1 & 0 & 0 & 0 & 1
 \end{bmatrix}$$
 
-2. *Au vu de la distance de Hamming de C, quelles sont ses capacités de correction et de détection d’erreur(s) ?*
+1. *Au vu de la distance de Hamming de C, quelles sont ses capacités de correction et de détection d’erreur(s) ?*
 
-Pour un Hamming code de distance d, on peut détecter $d-1$ erreurs et corriger $[d-1]/2$ erreurs. Pour le code C on peut donc détecter 3 erreurs et en corriger une.
+Pour un Hamming code de distance d, on peut détecter $d-1$ erreurs et corriger $\frac{d-1}{2}$ erreurs. Pour le code C on peut donc détecter 3 erreurs et en corriger une.
 
 ## III - ...se cachent des polynômes générateurs équivalents.
 
@@ -59,51 +60,56 @@ On remarque le même motif qui se répéte en décalant à droite d'un bit sur c
 <thead><tr><th colspan="2" style="text-align:center">Message : 1010</th></tr></thead>
 <tbody>
   <tr><th>Position</th><th>C mod P</th></tr>
-  <tr><td><b>1</b></td><td>1 0 0 0</td></tr>
-  <tr><td><b>2</b></td><td>1 0 0 0</td></tr>
-  <tr><td><b>3</b></td><td>0.55700</td></tr>
-  <tr><td><b>4</b></td><td>0.43400</td></tr>
-  <tr><td><b>5</b></td><td>0.43400</td></tr>
-  <tr><td><b>6</b></td><td>0.43400</td></tr>
-  <tr><td><b>7</b></td><td>0.43400</td></tr>
-  <tr><td><b>8</b></td><td>0.43400</td></tr>
+  <tr><td><b>1</b></td><td>1 0 1 1</td></tr>
+  <tr><td><b>2</b></td><td>1 1 0 0</td></tr>
+  <tr><td><b>3</b></td><td>0 1 1 0</td></tr>
+  <tr><td><b>4</b></td><td>0 0 1 1</td></tr>
+  <tr><td><b>5</b></td><td>1 0 0 0</td></tr>
+  <tr><td><b>6</b></td><td>0 1 0 0</td></tr>
+  <tr><td><b>7</b></td><td>0 0 1 0</td></tr>
+  <tr><td><b>8</b></td><td>0 0 0 1</td></tr>
   </tbody>
 </table>
 <table style="margin:auto;text-align:center;">
 <thead><tr><th colspan="2" style="text-align:center">Message : 1101</th></tr></thead>
 <tbody>
   <tr><th>Position</th><th>C mod P</th></tr>
-  <tr><td><b>1</b></td><td>1 0 0 0</td></tr>
-  <tr><td><b>2</b></td><td>1 0 0 0</td></tr>
-  <tr><td><b>3</b></td><td>0.55700</td></tr>
-  <tr><td><b>4</b></td><td>0.43400</td></tr>
-  <tr><td><b>5</b></td><td>0.43400</td></tr>
-  <tr><td><b>6</b></td><td>0.43400</td></tr>
-  <tr><td><b>7</b></td><td>0.43400</td></tr>
-  <tr><td><b>8</b></td><td>0.43400</td></tr>
+  <tr><td><b>1</b></td><td>1 0 1 1</td></tr>
+  <tr><td><b>2</b></td><td>1 1 0 0</td></tr>
+  <tr><td><b>3</b></td><td>0 1 1 0</td></tr>
+  <tr><td><b>4</b></td><td>0 0 1 1</td></tr>
+  <tr><td><b>5</b></td><td>1 0 0 0</td></tr>
+  <tr><td><b>6</b></td><td>0 1 0 0</td></tr>
+  <tr><td><b>7</b></td><td>0 0 1 0</td></tr>
+  <tr><td><b>8</b></td><td>0 0 0 1</td></tr>
   </tbody>
 </table>
 <table style="margin:auto;text-align:center;">
 <thead><tr><th colspan="2" style="text-align:center">Message : 0111</th></tr></thead>
 <tbody>
   <tr><th>Position</th><th>C mod P</th></tr>
-  <tr><td><b>1</b></td><td>1 0 0 0</td></tr>
-  <tr><td><b>2</b></td><td>1 0 0 0</td></tr>
-  <tr><td><b>3</b></td><td>0.55700</td></tr>
-  <tr><td><b>4</b></td><td>0.43400</td></tr>
-  <tr><td><b>5</b></td><td>0.43400</td></tr>
-  <tr><td><b>6</b></td><td>0.43400</td></tr>
-  <tr><td><b>7</b></td><td>0.43400</td></tr>
-  <tr><td><b>8</b></td><td>0.43400</td></tr>
+  <tr><td><b>1</b></td><td>1 0 1 1</td></tr>
+  <tr><td><b>2</b></td><td>1 1 0 0</td></tr>
+  <tr><td><b>3</b></td><td>0 1 1 0</td></tr>
+  <tr><td><b>4</b></td><td>0 0 1 1</td></tr>
+  <tr><td><b>5</b></td><td>1 0 0 0</td></tr>
+  <tr><td><b>6</b></td><td>0 1 0 0</td></tr>
+  <tr><td><b>7</b></td><td>0 0 1 0</td></tr>
+  <tr><td><b>8</b></td><td>0 0 0 1</td></tr>
   </tbody>
 </table>
 </div>
 
 *Répétez l’opération sur au moins deux autres mots Mb et Mc. Qu’observez-vous ?*
 
-On remarque que le syndrome est le même pour une postion i peu importe le message de base.
+On remarque que le résultat de C mod P est le même pour une postion i peu importe le message de base. Donc C mod P renvoit le syndrome et donc la position de l'erreur dans le codeword C.
 
-1. *Soit le vecteur vi à 9 bits tel que seul le i eme bit est à 1. Pour tout $vi|i ∈$ {0,9}, calculez vi mod P. Que constatez-vous ? Que pouvez-vous en conclure ?*
+4. *Soit le vecteur vi à 9 bits tel que seul le i eme bit est à 1. Pour tout $vi|i ∈$ {0,9}, calculez vi mod P. Que constatez-vous ? Que pouvez-vous en conclure ?*
+
+On constate qu'en rajoutant un 9ème bit au vecteur, le syndrome se retrouve décalé d'un bit à gauche par rapport au syndrome qu'on obtient avec un vecteur de 8 bits.
+
+5. *À l’aide de vos observations, implémentez un mécanisme efficace permettant de corriger des erreurs uniques. Justifier vos choix d’implémentation et tester votre implémentation.*
+
+## V - Tests sur un Médium peu fiable
 
-2. *À l’aide de vos observations, implémentez un mécanisme efficace permettant de corriger des erreurs uniques. Justifier vos choix d’implémentation et tester votre implémentation.*