Skip to content
Snippets Groups Projects
main.c 3.01 KiB
Newer Older
Sihamais's avatar
Sihamais committed
#include "cce.h"

Paco's avatar
Paco committed
int main(void)
Sihamais's avatar
Sihamais committed
{
Sihamais's avatar
Sihamais committed
    char *msg = "1001";
Sihamais's avatar
Sihamais committed
    printf("\n----- II. Derrière certaines matrices génératrices... -----\n");
Sihamais's avatar
Sihamais committed

Sihamais's avatar
Sihamais committed
    printf("-- Q3 --\n");
Sihamais's avatar
Sihamais committed
    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
Paco's avatar
Paco committed

Sihamais's avatar
Sihamais committed
    printf("-- Q4 --\n");
Sihamais's avatar
Sihamais committed
    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));
Paco's avatar
Paco committed

Sihamais's avatar
Sihamais committed
    printf("----- IV. Restaurez la gloire matricielle de P -----\n\n");
Sihamais's avatar
Sihamais committed

Sihamais's avatar
Sihamais committed
    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
Paco's avatar
Paco committed

Sihamais's avatar
Sihamais committed
    printf("-- Q2 --\n");
Sihamais's avatar
Sihamais committed
    printf("Codeword : %s\t\tCodeword avec une erreur à la position %d : %s\n\n", encode(msg), 2, set_error(encode(msg), 2));
Paco's avatar
Paco committed

Sihamais's avatar
Sihamais committed
    printf("-- Q3 --\n");
    char *codeword = polynomial_encode(msg);
    char *false_codeword;
Sihamais's avatar
Sihamais committed
    printf("Codeword : %s\n", codeword);
Sihamais's avatar
Sihamais committed
    for (int i = 0; i < 8; i++)
Sihamais's avatar
Sihamais committed
    {
Sihamais's avatar
ok  
Sihamais committed
        false_codeword = set_error(codeword, i);
        printf("Erreur à la position %d : %s\tC mod P : %s\n", i, false_codeword, polynomial_decode(false_codeword));
Sihamais's avatar
Sihamais committed
    }
    printf("\n");

    codeword = polynomial_encode("1101");
Sihamais's avatar
Sihamais committed
    printf("Codeword : %s\n", codeword);
Sihamais's avatar
Sihamais committed
    for (int i = 0; i < 8; i++)
    {
Sihamais's avatar
ok  
Sihamais committed
        false_codeword = set_error(codeword, i);
        printf("Erreur à la position %d : %s\tC mod P : %s\n", i, false_codeword, polynomial_decode(false_codeword));
Sihamais's avatar
Sihamais committed
    }
    printf("\n");

    codeword = polynomial_encode("0111");
Sihamais's avatar
Sihamais committed
    printf("Codeword : %s\n", codeword);
Sihamais's avatar
Sihamais committed
    for (int i = 0; i < 8; i++)
    {
Sihamais's avatar
ok  
Sihamais committed
        false_codeword = set_error(codeword, i);
        printf("Erreur à la position %d : %s\tC mod P: %s\n", i, false_codeword, polynomial_decode(false_codeword));
Sihamais's avatar
Sihamais committed
    }
Sihamais's avatar
Sihamais committed
    printf("\n\n");
Sihamais's avatar
ok  
Sihamais committed

Sihamais's avatar
Sihamais committed
    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");

Sihamais's avatar
ok  
Sihamais committed
    free(false_codeword);
Sihamais's avatar
Sihamais committed
}