#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void main()
{
int g[4][7]={
1,0,0,0,1,0,1,
0,1,0,0,1,1,1,
0,0,1,0,1,1,0,
0,0,0,1,0,1,1};
int h[3][7]={
1,1,1,0,1,0,0,
0,1,1,1,0,1,0,
1,1,0,1,0,0,1};
int i,j,u[4],c[7]={0},r[7],s[3];
printf("* * * * * BCH * * * * *\n");
printf("\n (7,4,1)码\n \n");
printf("随机消息序列: \n");
srand(time(NULL));
for(i=0;i<4;i++)
{
int r = rand()%4;
u[i] = r%2;
printf("%d ", u[i]);
}
printf("\n");
for(i=0;i<7;i++)
for(j=0;j<4;j++)
{
c[i]=((c[i]+u[j]*g[j][i])%2);
}
printf("编码输出序列: \n");
for(i=0;i<7;i++)
printf(" %d",c[i]);
printf("\n");
printf("如果传输无误,则接收序列: \n");
for(i=0;i<7;i++)
r[i]=c[i];
for(i=0;i<7;i++)
printf(" %d",r[i]);
printf("\n");
for(i=0;i<3;i++)
for(j=0;j<7;j++)
{
s[i]=((s[i]+c[j]*h[i][j])%2);
}
printf("伴随式: \n");
for(i=0;i<3;i++)
printf(" %d",s[i]);
printf("\n");
}