C语言线性分组码

上传人:桔**** 文档编号:497707171 上传时间:2022-07-12 格式:DOCX 页数:7 大小:17.87KB
返回 下载 相关 举报
C语言线性分组码_第1页
第1页 / 共7页
C语言线性分组码_第2页
第2页 / 共7页
C语言线性分组码_第3页
第3页 / 共7页
C语言线性分组码_第4页
第4页 / 共7页
C语言线性分组码_第5页
第5页 / 共7页
点击查看更多>>
资源描述

《C语言线性分组码》由会员分享,可在线阅读,更多相关《C语言线性分组码(7页珍藏版)》请在金锄头文库上搜索。

1、#includestdioh #include void main()/*G:生成矩阵H:监督矩阵HT:监督矩阵对应的转置矩阵*/*!:输入信息序列C:编码输出序列Input:输入接收码序列B:译码输出序列S: 伴随式*/int Q,N; /*定义开始大/int i, j, s,r,k, t,p, u, m;int G 4 7=1,0, 0,0,1,1,1, 0, 1, 0,0, 1,1, 0, 0, 0,1, 0,1,0, 1, 0,0,0,L 0,1, 1 ;int IR3 3= 1,0,0, 0,1,0 ,0, 0,1 ;int H 3 7, C 107,M 10 4,B 20 7 ,I

2、nput100, HT7 3 ,P10, S 100 3; /*定义结束大/printf(n您好!欢迎使用线性分组码编译器! n” );printf(” nn本编译器针对(7, 4)码,所采用的生成矩阵G=n” );for (i=0; i4;i+)/生成矩阵的建立(for(j=0j7;j+) printf( %d”,G i j);printf (”n”);printf( ”编译码过程都是针对二进制码组,除了系统要求选择功能,其他情况下禁止输入 除0,1以外的数。请在使用的过程中严格按照编译器要求的格式输入数据。nn);printf( ”现在请输入您所选择的编译器所对应的序号,按回车键继续:n)

3、;printf (n1.编码器2.译码器3.退出n” );printf(n 我选择:”); scanfC%d,&Q); if(Q=0)Q+=4; while (Q) if(Q=1IIQ=2 I IQ=3)break;/判 断输入是否有误else (printf(”对不起,您输入有误,请重新输入”);scanf(%d”,&Q); while(Q=1 II Q=2IIQ=3)if(Q=1) /*编码程序* /printf(” n请输入您需要编码的信息组数); scanf (%d”,&N);printf (” nn请输入您需要编码的d组四位二进制信息组,码组间用空 格分开,按回车键确认。n”,N);

4、 /大输入信息码Wprintf (n 信息组 m=” );for (i=0;iN;i+)scanf(”1d%1d%1d%1d”,&Mi 3,&Mi 2 ,&Mi 1,&Mi 0);/*求监督码*/ for(i=0; i2; i-)/*输出编码结果*/ C j i=M ji-3; printf(” n您所输入的信息组编码结果c=); for (j=0; jN; j+) for(i=6;i=0; i)printf (%d” ,C j i); 输出编码结果 printf (n” );/换行)printf (nn”);printf (n接下来您想:nn); /*选择功能大/ printf (1.用编码

5、器2.用译码器3。退出nn”); printf (”我想:); scanf(%d,&Q); else if(Q=2)/*译码程序大/ for(i=0; i3;i+) /* 求监督矩阵火 /for (j=0j4j+)H i j =Gj i+4; for(j=4j=0;j,i+)Br j =Inputi;printf(n将接收码组每七位分为一个码组,如下:n” );for(i=0; iu;i+)for(j=0j7; j+)printf ( %1d” ,B i 6-j);显示分好的码组printf(n);for(i=0; i3;i+) /*求监督矩阵H的转置矩阵*/for (j=0j7j+) HT

6、ji =H i j;for (i=0; iu; i+)计算伴随式for(m=0; m3;m+) for(j=0;j7; j+)s+= (Bi 6-j*HT j m);if (s%2=1) s=1;elses=0;Si2m =s; s=0;printf (nn伴随式S=n); /*输出伴随式大/for(j=0; ju; j+)for (i=2; i=0;i-)printf (” 1d”,Sji);printf (n”); printf (n);for (i=0; i=0; j-)printf (”1d”,B ij);printf (请您再次确认!” );printf (”译出的信息序列为:”);

7、for (j=6; j2j-)printf (%d,Bi j); break;case 2:B i 0=1ABi 0;printf (”nn您接收的第d个码组有错误,正确的码组应为:”,+i);i;for (j=6; j=0; j)printf(”1d”,Bij);printf(译出的信息序列为:”);for(j=6; j2j)printf(%d”,B i j); break;case 3:B i 1=1ABi 1;printf(”nn您接收的第d个码组有错误,正确的码组应为:”,+i);i;for(j=6; j=0; j)printf(”1d, B ij);printf( ”译出的信息序列为

8、:”);for(j=6; j2j-)printf (”d”,B i j); break;case 4:B i 3 =1ABi3;printf(”nn您接收的第d个码组有错误,正确的码组应为:,+i);i;for (j=6; j=0; j)printf(%1d,Bi j);printf(译出的信息序列为:,for(j=6;j2; j-)printf(”d”,Bi j ); break;case 5:Bi 2 =1人Bi 2;printf (” nn您接收的第d个码组有错误,正确的码组应为:”, +i);i;for(j=6; j=0 )printf(%1d, Bij);printf (”译出的信息

9、序列为:”);for(j=6; j2j)printf (%d”, Bi j); break;case 6:Bi 4 =1ABi 4;printf(” nn您接收的第d个码组有错误,正确的码组应为:”,+i); i-;for (j=6; j=0; j)printf (%1d, Bi j);printf( ”译出的信息序列为:); for (j=6j2j) printf(%d”,Bi j); break;case 7:Bi 5 =1ABi5;printf(nn您接收的第d个码组有错误,正确的码组应为:,+i);i-;for(j=6;j=0; j-)printf(%1d,B i j);printf

10、(”译出的信息序列为:”);for(j=6; j2; j-)printf(%d”,Bi j); break;case 8:B i 6=1AB i6;printf(nn您接收的第 d个码组有错误,正确的码组应为: ,+i);for (j=6j=0; j)printf (”1d”,Bij);printf(译出的信息序列为:”);for(j=6;j2 )printf (%d,Bij) ;break;printf( nn总的译码结果为:”);for(i=0; iu; i+)for (j=6; j2j)printf (%1d”,Bi j);printf (nn接下来您想:nn”);/*继续选择功能大/printf ( 1。用编码器2.用译码器3。退出nn”);printf (”我想:”);scanf(”d”,&Q);if(Q=0)Q=Q+4;while(Q)if (Q=1I I Q=2I I Q=3)break;else printf( ”对不起,您输入有误,请重新输入”);scanf (%d”,&Q);

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 其它学术论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号