中国IT动力,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> 程序开发 > 编程语言 > 综合其它
纠错编码作业之一
作者:未知 时间:2005-09-13 23:34 出处:Blog.ChinaUnix.net 责编:chinaitpower
              摘要:纠错编码作业之一
编写生成(7,4,3)的hamming码具有编码、译码功能的程序

虽然学了一段时间的C,但是这是第一个自己完成的小程序,看来还是有点压力好啊!缺点是很明显的:1、全篇只用一个main,没有模块化,重用性差;2、不能处理不合法的输入,健壮性差。特点:能识别出错位置并纠错。

#include


int main(){
 
 printf( "Please enter a code for send( 4 bit ): " );
 int sendCode;
 scanf( "%d", &sendCode );
 
 //产生code
 int code[4] = ;
 code[0] = sendCode / 1000;
 int send1 = sendCode % 1000;
 code[1] = send1 / 100;
 int send2 = send1 % 100;
 code[2] = send2 / 10;
 code[3] = send2 % 10;

 //测试
 int i = 0;
 for( i = 0; i < 4; i++ ){
  printf( "%d\n",code[i] );
 }

 //产生校验矩阵
 int H[3][7] = {
  ,
  ,
  };
 //产生生成矩阵
 int G[4][7] = {
  ,
  ,
  ,
  };

 int codeword[7] = ;
 int errorcode[7] = ;
  
 //产生发送码字
 int j = 0;
 printf( "Your codeword for send is: " );
 for( j = 0; j < 7; j++ ){
  codeword[j] = (G[0][j]*code[0])^
       (G[1][j]*code[1])^
       (G[2][j]*code[2])^
       (G[3][j]*code[3]);
  printf( "%d",codeword[j] );
  errorcode[j] = codeword[j];
 }

 //给出出错位数,得到错误码
 printf( "\nPlease enter the error site: " );
 int errorSite;
 scanf( "%d",&errorSite );
 errorcode[ errorSite - 1 ] = ( codeword[ errorSite - 1 ] + 1 ) % 2;
 printf( "\nThe error codeword is: " );
 for( j = 0; j < 7; j++ ){
  printf( "%d",errorcode[j] );
 }

 //算出错误位并译码
 printf( "\nThe error site is: " );
 int error_site[3] = ;
 for( i = 0; i < 3; i++ ){
  error_site[i] = (H[i][0]*errorcode[0])^
      (H[i][1]*errorcode[1])^
      (H[i][2]*errorcode[2])^
      (H[i][3]*errorcode[3])^
      (H[i][4]*errorcode[4])^
      (H[i][5]*errorcode[5])^
      (H[i][6]*errorcode[6]);
  printf( "%d",error_site[i] );
 }

 errorSite = error_site[0] *4 + error_site[1] * 2 + error_site[2];
 printf( " = %d\n",errorSite );

 
 
 codeword[ errorSite - 1 ] = ( errorcode[ errorSite - 1 ] + 1 ) % 2;
 int correct_code[7] = ;
 correct_code[0] = codeword[6];
 correct_code[1] = codeword[5];
 correct_code[2] = codeword[4];
 correct_code[3] = codeword[2];
 correct_code[4] = codeword[3];
 correct_code[5] = codeword[1];
 correct_code[6] = codeword[0];
 printf( "The correct code is : " );
 for( i = 0; i < 4; i++ ){
  printf( "%d",correct_code[i] );
 }
 printf( " isn't it?\n" );
 
 
 return 0;
}

关闭本页
 
首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
Copyright ©2005-2008 chinaitpower.com All rights reserved. www.chinaitpower.com 版权所有