📄 计算机网络原理.cpp
字号:
#include<stdio.h>
#define N 20
void bijiao(int n,int Y[N],int G[N]);
int tongji(int n,int Y[N]);
void main()
{
int M[N];
int G[N];
int Y[N];
int n,m,i,p,r,j;/*n为G的阶数,m为原码M的码数*/
printf("请输入原码M的码数m:");
scanf("%d",&m);
printf("请输入原码M:\n");
for(i=0;i<m;i++)
scanf("%d",&M[i]);
printf("请输入G的阶n:");
scanf("%d",&n);
printf("请输入G:\n");
for(i=0;i<n;i++)
scanf("%d",&G[i]);
printf("原码M为:");
for(i=0;i<m;i++)
printf("%d",M[i]);
printf("\n");
printf("码G为:");
for(i=0;i<n;i++)
printf("%d",G[i]);
printf("\n");
for(i=m;i<m+n;i++)
M[i]=0;
printf("给原码后添加%d个0后的原码变为:",n);
for(i=0;i<m+n;i++)
printf("%d",M[i]);
printf("\n");
for(i=n+m;i<N;i++)
M[i]=2;/*给M码的最后几位赋2值*/
for(i=0;i<n;i++)/*初始化Y*/
Y[i]=M[i];
p=n-1;
do
{
bijiao(n,Y,G);
tongji(n,Y);
r=tongji(n,Y);
p=p+r;
for(i=r,j=0;i<n,j<=n-r;i++,j++)
Y[j]=Y[i];
for(i=1;i<=r;i++)
Y[n-r-1+i]=M[p-r+i];
}
while(M[p]!=2&&M[p+r]!=2);
p=p-r;
r=n+m-1-p;
for(i=r,j=0;i<n,j<=n-r;i++,j++)
Y[j]=Y[i];
for(i=1;i<=r;i++)
Y[n-r-1+i]=M[p+i];
printf("余码为:\n");
for(i=0;i<n;i++)
printf("%d",Y[i]);
}
void bijiao(int n,int Y[N],int G[N])
{
int i;
for(i=0;i<n;i++)
{
if(Y[i]==G[i])
Y[i]=0;
else
Y[i]=1;
}
}
int tongji(int n,int Y[N])/*统计Y前几项有几个连续的0*/
{
int i=0;
while(Y[i]!=1)
i++;
return i;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -