#include/*函数声明*
void Begin (;
void Code (;
void Decoding (;
/*主函数*
main () )
{
printf((n ) 7、3 )循环码编码与解码(n ) );
Begin (;
}
/*编码*
void Code () )
{
int Input[3];
int Output[7];
intreg [4]={ 0,0,0,0 };
int temp,I,j,t;
printf (‘请输入3位信息代码(3次输入,每次1位) : );
for(I=0; i3; I )
scanf(‘%d ‘,Input[i] );/*输入3位信息代码*
for(I=0; i3; I(/)执行除法操作) /
{temp=reg[3] Input[i]; /*生成多项式为g(x )=x^4 x^3 x^2 1*/
if(temp==2) temp=0;
reg[3]=reg[2] temp;
if(reg(3)==2) reg (3) )=0;
reg[2]=reg[1] temp;
if(reg[2]==2) reg[2]=0;
reg[1]=reg[0];
reg[0]=temp;
}
for(I=0; i3; I ) Output[i]=Input[i]; /*执行编码操作*
for(I=3; i7; I )
{
temp=reg[3];
for(j=3; j0; j—-)
reg[j]=reg[j-1];
reg[0]=0;
Output[i]=temp;
}
printf (_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ utf )
打印((n );
printf (编码结果:(n );
for(I=0; i7; I )
printf(‘%d ‘,Output[i] ); /*输出编码结果*
打印((n );
printf (_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ utf )
打印((n );
Begin (;
}
/*解码并纠正错误*
语音解码()
{ int Input[7],Output[7];
intreg [4]={ 0,0,0,};
int temp,I,d,x,p;
printf((\n7位码字(一次输入一位,7次) : ) );
for(I=0; i7; I )
scanf(‘%d ‘,Input[i] ); /*输入受理代码组*
for(I=0; i7; 进入I(/)除法电路) /
{temp=reg[3]; /*计算伴随式s(x ) /
reg[3]=reg[2] temp;
if(reg(3)==2) reg (3) )=0;
reg[2]=reg[1] temp;
if(reg[2]==2) reg[2]=0;
reg[1]=reg[0];
reg[0]=temp Input[i];
if(reg[0]==2) reg[0]=0;
}
p=reg [3]2* reg [2]4* reg [1]8* reg [0];
if(p!=1p!=2p!=3p!=7p!=8p!=13p!=14p!=0)
{ /*输入错误位数大于2位*
printf(((theerror=2) () n );
getchar (;
退出(0;
}
printf (_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ utf )
printf(s ) x )=);
for(I=3; i=0; I—-)
printf(‘%d ‘,reg[i] );
打印((n );
for(I=0; i7; I () )纠正1位错误() /
{ d=reg [3] * reg [2] * reg [1] * (reg [0];
Output[i]=d Input[i];
if(output[I]==2) Output[i]=0;
temp=reg[3];
x=0; /*s(x )进行自发运算求出错误位数) /
reg[3]=temp reg[2];
if(reg(3)==2) reg (3) )=0;
reg[2]=reg[1] temp;
if(reg[2]==2) reg[2]=0;
reg[1]=reg[0];
reg[0]=temp x;
(/)输出3位信息源(/
打印(thedecodingbit 3is : );
for(I=0; i3; I )
printf(‘%d ‘,Output[i] );
打印((n );
打印(thedecodingbit 7is : );/*输出7位解码结果*
for(I=0; i7; I )
printf(‘%d ‘,Output[i] );
打印((n );
printf (_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ utf )
Begin (;
}
/*选择操作*
void Begin () )
{
flush(stdin;
char ch;
printf———————————-;
打印((n );
printf (输入—-开始编码— );
打印((n );
printf (输入—-d开始解码–);
打印((n );
输入printf—-e退出程序— ‘;
打印((n );
printf———————————-;
打印((n );
ch=getchar (;
if(ch==’c ‘ )代码);
ELSEif(ch==’d ‘ ) Decoding );
elseif(ch==’\n ‘ ) Begin );
elseif(ch==’e ‘ ) exit(0) 0;
ELSE{printf((inputerror () ) ) n ); flush(stdin; Begin (; (/)输入错误消息(/
}