diff --git a/README b/README
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..783b6775dc4f8c849661ce392d85836dbddc78fd 100644
--- a/README
+++ b/README
@@ -0,0 +1 @@
+Pour lancer le programme il suffit de lancer la commande Make puis ./code.
\ No newline at end of file
diff --git a/main.c b/main.c
index 3b6aa0d5e4c87a6bf2afead5a56ca2b4684a9645..424d70510e8357e231589463a7dcffbaaefb1ae2 100644
--- a/main.c
+++ b/main.c
@@ -3,32 +3,32 @@
 int main(void)
 {
     char *msg = "1001";
-    printf("\n----- II. Derrière certaines matrices génératrices... -----\n\n");
+    printf("\n----- II. Derrière certaines matrices génératrices... -----\n");
 
-    printf("-- Q3 --\n\n");
+    printf("-- Q3 --\n");
     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("-- Q4 --\n");
     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\nMessage encodé avec le polynôme : %s\n%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("-- Q1 --\n");
+    printf("Message : %s\nMessage encodé avec la matrice : %s\nMessage encodé avec le polynôme : %s\n%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("-- Q2 --\n");
     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(msg);
-    char* false_codeword;
+    printf("-- Q3 --\n");
+    char *codeword = polynomial_encode(msg);
+    char *false_codeword;
     printf("Codeword : %s\n", codeword);
-    for(int i = 0; i < 8; i++)
+    for (int i = 0; i < 8; i++)
     {
         false_codeword = set_error(codeword, i);
         printf("Erreur à la position %d : %s\tC mod P : %s\n", i, false_codeword, polynomial_decode(false_codeword));
@@ -36,7 +36,7 @@ int main(void)
     printf("\n");
 
     codeword = polynomial_encode("1101");
-    printf("\nCodeword : %s\n", codeword);
+    printf("Codeword : %s\n", codeword);
     for (int i = 0; i < 8; i++)
     {
         false_codeword = set_error(codeword, i);
@@ -45,7 +45,7 @@ int main(void)
     printf("\n");
 
     codeword = polynomial_encode("0111");
-    printf("\nCodeword : %s\n", codeword);
+    printf("Codeword : %s\n", codeword);
     for (int i = 0; i < 8; i++)
     {
         false_codeword = set_error(codeword, i);
@@ -53,5 +53,10 @@ int main(void)
     }
     printf("\n\n");
 
+    printf("-- Q5 --\n");
+    codeword = polynomial_encode(msg);
+    false_codeword = set_error(codeword, 1);
+    printf("Message : %s\nMessage encodé (sans erreur) : %s\nMessage encodé (avec erreur) : %s\nMessage corrigé : %s\n%s\n\n", msg, codeword, false_codeword, error_correction(false_codeword), strcmp(codeword, error_correction(codeword)) == 0 ? "Bon résultat" : "Mauvais résultat");
+
     free(false_codeword);
 }
\ No newline at end of file
diff --git a/rapport.md b/rapport.md
index 3ff860838ac1dd5276755241aa3ca33f9f78cdd1..4b6c85cc2bde0c5f6de8e9639a8ee14bdec10e9b 100644
--- a/rapport.md
+++ b/rapport.md
@@ -106,9 +106,25 @@ On remarque que le résultat de C mod P est le même pour une postion i peu impo
 
 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.
+<div style="display:grid;grid-template-columns:1fr 1fr;">
+<table style="margin:auto;text-align:center;">
+<tbody>
+  <tr><th>Codeword</th><th>C mod P</th></tr>
+  <tr><td>000000001</td><td>1 0 1 1</td></tr>
+  <tr><td>000000010</td><td>1 1 0 0</td></tr>
+  <tr><td>000000100</td><td>0 1 1 0</td></tr>
+  <tr><td>000001000</td><td>0 0 1 1</td></tr>
+  <tr><td>000010000</td><td>1 0 0 0</td></tr>
+  <tr><td>000100000</td><td>0 1 0 0</td></tr>
+  <tr><td>001000000</td><td>0 0 1 0</td></tr>
+  <tr><td>010000000</td><td>0 0 0 1</td></tr>
+  <tr><td>100000000</td><td>0 0 0 1</td></tr>
+  </tbody>
+</table>
+<p style="margin:auto;">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.</p>
+</div>
 
-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.*
+1. *À 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