Skip to content
Snippets Groups Projects
Commit e4de6408 authored by Sihamais's avatar Sihamais
Browse files

work

parent d34b1264
Branches master
No related merge requests found
Pour lancer le programme il suffit de lancer la commande Make puis ./code.
\ No newline at end of file
......@@ -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
......@@ -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
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment