⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 hm.cpp

📁 计算海明码
💻 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 + -