#include #include #include #include #include const int n=15; const int k=7; const int m=8; int *bin(int); void en_BCH(int *mot); int compare1(); void compare2(); int G[k][n]={ {1,0,0,0,0,0,0,1,1,1,0,1,0,0,0}, {0,1,0,0,0,0,0,0,1,1,1,0,1,0,0}, {0,0,1,0,0,0,0,0,0,1,1,1,0,1,0}, {0,0,0,1,0,0,0,0,0,0,1,1,1,0,1}, {0,0,0,0,1,0,0,1,1,1,0,0,1,1,0}, {0,0,0,0,0,1,0,0,1,1,1,0,0,1,1}, {0,0,0,0,0,0,1,1,1,0,1,0,0,0,1}}; int Ht[n][m]={ {1,1,1,0,1,0,0,0}, {0,1,1,1,0,1,0,0}, {0,0,1,1,1,0,1,0}, {0,0,0,1,1,1,0,1}, {1,1,1,0,0,1,1,0}, {0,1,1,1,0,0,1,1}, {1,1,0,1,0,0,0,1}, {1,0,0,0,0,0,0,0}, {0,1,0,0,0,0,0,0}, {0,0,1,0,0,0,0,0}, {0,0,0,1,0,0,0,0}, {0,0,0,0,1,0,0,0}, {0,0,0,0,0,1,0,0}, {0,0,0,0,0,0,1,0}, {0,0,0,0,0,0,0,1}}; int *d=new int[k]; int *c=new int[n]; int *r=new int[n]; int *s=new int[m]; int *lHt=new int[m]; int *ligne=new int[2]; int err1=0, err2=0; void main(){ int i, j, l, taille; int dist, dmin=15; char car; ofstream os; os.open("codeBCH.txt"); ofstream os2; os2.open("texte_code_en_BCH.txt"); ofstream os3; os3.open("texte_erreur.txt"); ofstream os4; os4.open("syndrome.txt"); ofstream os5; os5.open("erreur.txt"); ofstream os6; os6.open("texte_corrige.txt"); ifstream is; is.open("Midsummer.cod"); ifstream is2; ifstream is3; ifstream is4; ifstream is5; /********************************************** *calcul des mots du code, de dmin et ecriture* **********************************************/ for(l=0;l<128;l++){ d=bin(l); en_BCH(d); for(i=0;i>car; if(car=='1') d[taille++]=1; if(car=='0') d[taille++]=0; } en_BCH(d); for(i=0;i>car; compteur3++; if(compteur==erreur){ if(car=='1') car ='0'; else if(car=='0') car ='1'; compteur2++; } if(compteur==nb){ erreur=(int)(nb*(double)rand()/RAND_MAX); compteur=0; } compteur++; os3<>car; if(car=='1') r[i]=1; if(car=='0') r[i]=0; } for(i=0;i0){ pos=compare1(); if(pos>=0){ for(i=0;i>car; is4>>car2; is5>>car_bon; if(car=='1') s1=1; if(car=='0') s1=0; if(car2=='1') s2=1; if(car2=='0') s2=0; if(car_bon=='1') s_bon=1; if(car_bon=='0') s_bon=0; s=(s1+s2)%2; os6<=0;i--){ if(temp-(int)pow(2,i)>=0){ res[k-1-i]=1; temp-=(int)pow(2,i); } else res[k-1-i]=0; } return res; } void en_BCH(int *mot){ for(int i=0;i