| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2537 人关注过本帖
标题:[求助]用C语言实现海明校验码,高手来帮帮忙啊!
只看楼主 加入收藏
似水无痕
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2005-1-3
收藏
 问题点数:0 回复次数:6 
[求助]用C语言实现海明校验码,高手来帮帮忙啊!
高手们,帮忙写个用C语言实现海明校验码的程序好了,小弟先谢谢了!
搜索更多相关主题的帖子: C语言 海明校验 
2005-01-03 13:22
似水无痕
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2005-1-3
收藏
得分:0 

#define N 13 #define M 9 #include<stdio.h>

void Deal(char S[],char D[],int n); main() { char H[N],D[M],S[4]; int i; printf("请输入一个8位的二进制代码: "); gets(D); /*----------------------------------------------------------------*/ H[12]=D[7]+D[6]+D[4]+D[3]+D[1]; H[12]=H[12]%2==0 ? '0':'1'; /*实现异或功能求各位海明校验码*/ H[11]=D[7]+D[5]+D[4]+D[2]+D[1]; H[11]=H[11]%2==0 ? '0':'1'; H[9]=D[6]+D[5]+D[4]+D[0]; H[9]=H[9]%2==0 ? '0':'1'; H[5]=D[3]+D[2]+D[1]+D[0]; H[5]=H[5]%2==0 ? '0':'1'; for(i=0;i<M-1;i++) H[0]+=D[i]; H[0]+=H[12]+H[11]+H[9]+H[5]; H[0]=H[0]%2==0 ? '0':'1'; H[1]=D[0];H[2]=D[1];H[3]=D[2];H[4]=D[3];H[6]=D[4];H[7]=D[5];H[8]=D[6];H[10]=D[7]; printf("--------------------------------------------\n"); printf("8位二制代码的原码为: "); for(i=0;i<M-1;i++) printf("%c",D[i]); printf("\n它的海明码为: "); for(i=0;i<N;i++) printf("%c",H[i]); /*---------------------------------------------------------------*/ printf("\n--------------------------------------------------------------------------\n"); printf("\n为了能让此程序实现海明校验及纠错的能力请把原8位二进制代码中任意一位弄错!\n"); gets(D); S[3]=H[12]+D[7]+D[6]+D[4]+D[3]+D[1]; S[3]=S[3]%2==0 ? '0':'1'; S[2]=H[11]+D[7]+D[5]+D[4]+D[2]+D[1]; /*奇偶形成电路*/ S[2]=S[2]%2==0 ? '0':'1'; S[1]=H[9]+D[6]+D[5]+D[4]+D[0]; S[1]=S[1]%2==0 ? '0':'1'; S[0]=H[5]+D[3]+D[2]+D[1]+D[0]; S[0]=S[0]%2==0 ? '0':'1'; printf("--------------------------------------------\n"); Deal(S,D,4); /*调用4~16译码器*/

}

void Deal(char S[],char D[],int n) /*模拟4~16译码器并对其纠正处理*/ { int i,sum,var,e; sum=0;e=1; for(i=n-1;i>=0;i--) { if(S[i]=='1') var=S[i]-'0'; else var=S[i]-'0'; sum+=var*e; e*=2; } switch(sum) /*选择并处理*/ { case 0: { printf("经校验后没有错误!\n"); break; } case 3: { printf("经校验后发现1号位置有错并对其纠正输出!\n"); D[7]=D[7]=='1'? '0':'1'; break; } case 5: { printf("经校验后发现2号位置有错并对其纠正输出!\n"); D[6]=D[6]=='1'? '0':'1'; break; } case 6: { printf("经校验后发现3号位置有错并对其纠正输出!\n"); D[5]=D[5]=='1'? '0':'1'; break; } case 7: { printf("经校验后发现4号位置有错并对其纠正输出!\n"); D[4]=D[4]=='1'? '0':'1'; break; } case 9: { printf("经校验后发现5号位置有错并对其纠正输出!\n"); D[3]=D[3]=='1'? '0':'1'; break; } case 10: { printf("经校验后发现6号位置有错并对其纠正输出!\n"); D[2]=D[2]=='1'? '0':'1'; break; } case 11: { printf("经校验后发现7号位置有错并对其纠正输出!\n"); D[1]=D[1]=='1'? '0':'1'; break; } case 12: { printf("经校验后发现8号位置有错并对其纠正输出!\n"); D[0]=D[0]=='1'? '0':'1'; break; } default: printf("校验位发生错误!\n"); } for(i=0;i<M-1;i++) printf("%c",D[i]); /*输出纠正后的结果*/ printf("\n"); }

这个是我同学做的,能帮忙改一下也成啊,学校老师急着要作业,为难死小弟了,谢谢了

2005-01-03 13:24
sunzhoujiao
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2005-1-4
收藏
得分:0 
大哥可以告诉我这是什么吗
2005-01-04 16:25
czwsky
Rank: 1
等 级:新手上路
帖 子:49
专家分:0
注 册:2005-3-21
收藏
得分:0 
可以告诉我什么是“海明校验码”吗?
2005-04-04 17:37
形影随从
Rank: 1
等 级:新手上路
威 望:1
帖 子:188
专家分:0
注 册:2005-3-15
收藏
得分:0 
三楼厉害。

2005-04-04 18:19
形影随从
Rank: 1
等 级:新手上路
威 望:1
帖 子:188
专家分:0
注 册:2005-3-15
收藏
得分:0 

原来夸错人了。

应该是二楼的牛。厉害!!


2005-04-04 18:22
skycanny
Rank: 1
等 级:新手上路
帖 子:87
专家分:0
注 册:2005-3-5
收藏
得分:0 
Hamming码还算比较简单的
关键问题是得出它的校验矩阵H
由校验矩阵进行编码是很容易的
相对来说译码要稍微的困难一些
一般都采用伴随式译码
2005-04-04 18:35
快速回复:[求助]用C语言实现海明校验码,高手来帮帮忙啊!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.040832 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved