📄 hm.cpp
字号:
#include<iostream.h>
#include<math.h>
void hanming()
{
int i,n,k=2;
int h[20];
for(i=0;i<20;i++)h[i]=0;
cout<<"@@@@@@@@ 请输入要转换的有效位的位数(n)@@@@@@@@"<<endl;
cin>>n;
while(pow(2,k)<n+k+1)k++;
cout<<"@@@@@@@@ 请输入要转换的有效码字 (每输入一位按一次回车)@@@@@@@@ "<<endl;
for(i=1;i<=n+k;i++){
if(i!=1&&i!=2&&i!=4&&i!=8)cin>>h[i];
}
h[1]=(h[3]+h[5]+h[7]+h[9]+h[11]+h[13]+h[15])%2;
h[2]=(h[3]+h[6]+h[7]+h[10]+h[11]+h[14]+h[15])%2;
h[4]=(h[5]+h[6]+h[7]+h[12]+h[13]+h[14]+h[15])%2;
h[8]=(h[9]+h[10]+h[11]+h[12]+h[13]+h[14]+h[15])%2;
for(i=1;i<=n+k;i++)cout<<h[i];
}
int jiaoyan(int a[],int n)
{
int i,p1,p2,p4,p8,m;
int h[20];
for(i=0;i<n;i++)h[i+1]=a[i];
for(i=n+1;i<20;i++)h[i]=0;
if(n==3){
//k=2;
p1=(h[1]+h[3])%2;
p2=(h[2]+h[3])%2;
m=2*p2+p1;
return m;
}
if(n>=5&&n<=7){
// k=3;
p1=(h[1]+h[3]+h[5]+h[7])%2;
p2=(h[2]+h[3]+h[6]+h[7])%2;
p4=(h[4]+h[5]+h[6]+h[7])%2;
m=4*p4+2*p2+p1;
return m;
}
if(n>=9&&n<=15){
//k=4;
p1=(h[1]+h[3]+h[5]+h[7]+h[9]+h[11]+h[13]+h[15])%2;
p2=(h[2]+h[3]+h[6]+h[7]+h[10]+h[11]+h[14]+h[15])%2;
p4=(h[4]+h[5]+h[6]+h[7]+h[12]+h[13]+h[14]+h[15])%2;
p8=(h[8]+h[9]+h[10]+h[11]+h[12]+h[13]+h[14]+h[15])%2;
m=8*p8+4*p4+2*p2+p1;
return m;
}
else{
cout<<"!!!!查错错误!!!!"<<endl;
return -1;
}
}
//主函数
void main()
{
hanming();
int coco;
int i,n,m,h[20];
cout<<endl;
cout<<"请输入要查错的码字的位数 "<<endl;
cin>>n;
cout<<"请输入要查错的码字(每输入一位按一次回车) "<<endl;
for(i=0;i<n;i++)cin>>h[i];
m=jiaoyan(h,n);
if(m==0)cout<<"码字没有错误 "<<endl;
if(m!=0)cout<<"错误的位数是:"<<m;
cout<<endl;
cin>>coco;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -